An implementation of Rosettacode's grayscale task (http://rosettacode.org/wiki/Grayscale_image) with additional features, including creating a Bitmap from scratch and manipulating its individual pixels.
Pull-Request: #1282
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Alexandre Terrasa <alexandre@moz-code.org>
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
# SVG to PNG and Nit
-This tool is used in combination with Inkscape to simplify assets creation for _mnit_ apps. It uses Inkscape to extract a PNG file from a SVG file. It will also create a Nit source file to create _mnit_ images for each objects with an id beginning by 0.
+This tool uses Inkscape to prepare assets for Nit applications from a single SVG file.
+It selects objects to extract from the SVG file when their id begins with `0`.
-# Features
+It will produce two files:
-* Creates a sinlge PNG file per SVG source file
-* Creates subimages for objects with an id beginning by 0.
-* If the id ends with 0 to 9, will instead create an array of subimages.
+* A Nit source file that declares a single class with an attribute for each selected object.
+ The attribute usually holds a single texture, except if the the id ends with a digit, then it will be an array.
-# Usage
+* A single PNG image file that contains all the selected objects.
+ With the option `--pow2`, the image size is rounded to the next of 2.
+
+## Usage
1. Create a new Inkscape document.
-2. Create objects and set their ids to begin with 0
-3. Save the document (ex: to `drawing.svg`) the name of the file is important
+2. Create objects and set their ids to begin with `0`.
+3. Save the document to `drawing.svg` (for this example), the name of the file is used to name the Nit class.
4. Execute `bin/svg_to_png_and_nit drawing.svg`
-5. From your code, import the generated source file (at src/drawing.nit`)
+5. From your code, import the generated source file at `src/drawing.nit`.
6. Use the class `DrawingImages` and its attributes.
-# Examples
+## Examples
-The minimal test in tests/app/ shows the basic usage of this tool.
+The minimal test in `tests/app/` shows the basic usage of this tool.
The Dino example `../../../../examples/mnit_dino` also uses this tool and is a more complete and practical example.
# This file is part of NIT ( http://www.nitlanguage.org ).
#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
+# Copyright 2012-2015 Alexis Laferrière <alexis.laf@xymus.net>
#
# 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.
-# This script extracts pngs from a single svg for all objects with ids
-# beginning by 0. Requires Inkscape.
+# Extract images of objects from an SVG file using Inkscape
module svg_to_png_and_nit
import opts
import template
+# Image information extracted from the SVG file
class Image
+ # Name extracted from the object ID minus the `0` prefix and Nit safe
var name: String
+
+ # Left border
var x: Int
+
+ # Top border
var y: Int
+
+ # Image width
var w: Int
+
+ # Image height
var h: Int
+
+ # Right border
fun right: Int do return x+w
+
+ # Bottom border
fun bottom: Int do return y+h
redef fun to_s do return name
end
-# The Nit source file to retreive all images
-class ImageSetSrc
+# Document being processed, concerns both the source and the target
+class Document
+ # Name of the source file
+ var drawing_name: String
+
+ # Name of the class to generate
+ var nit_class_name: String = drawing_name.capitalized + "Images" is lazy
+
+ # Scaling to apply to the exported image
+ var scale: Float
+
+ # Source minimum X
+ var min_x: Int
+
+ # Source maximum X
+ var max_x: Int
+
+ # Source minimum Y
+ var min_y: Int
+
+ # Source maximum Y
+ var max_y: Int
+
+ # Get the coordinates for `image` as `"x, y, w, h"`
+ fun coordinates(image: Image): String
+ do
+ var x = image.x.adapt(min_x, scale)
+ var y = image.y.adapt(min_y, scale)
+ var w = (image.w.to_f*scale).to_i
+ var h = (image.h.to_f*scale).to_i
+
+ return "{x}, {y}, {w}, {h}"
+ end
+end
+
+# Nit module with a single class to retrieve to access the extracted images
+abstract class ImageSetSrc
super Template
- var name: String
- init(name: String) do self.name = name
+ # Target document
+ var document: Document
- var attributes = new Array[String]
- var load_exprs = new Array[String]
+ # Images found in the source document
+ var images: Array[Image]
+end
+
+# Nit module targeting the MNit framework
+class MnitImageSetSrc
+ super ImageSetSrc
redef fun rendering
do
+ # Known array of images
+ var arrays_of_images = new Array[String]
+
+ # Attributes of the generated class
+ var attributes = new Array[String]
+
+ # Statements for the generated `load_all` method
+ var load_exprs = new Array[String]
+
+ # Add images to Nit source file
+ for image in images do
+ # Adapt coordinates to new top left and scale
+ var coordinates = document.coordinates(image)
+
+ var nit_name = image.name
+ var last_char = nit_name.chars.last
+ if last_char.to_s.is_numeric then
+ # Array of images
+ # TODO support more than 10 images in an array
+
+ nit_name = nit_name.substring(0, nit_name.length-1)
+ if not arrays_of_images.has(nit_name) then
+ # Create class attribute to store Array
+ arrays_of_images.add(nit_name)
+ attributes.add "\tvar {nit_name} = new Array[Image]\n"
+ end
+ load_exprs.add "\t\t{nit_name}.add(main_image.subimage({coordinates}))\n"
+ else
+ # Single image
+ attributes.add "\tvar {nit_name}: Image is noinit\n"
+ load_exprs.add "\t\t{nit_name} = main_image.subimage({coordinates})\n"
+ end
+ end
+
add """
-# file generated by svg_to_png, do not modify, redef instead
+# File generated by svg_to_png_and_nit, do not modify, redef instead
import mnit::image_set
-class {{{name}}}
+class {{{document.nit_class_name}}}
super ImageSet
+ private var main_image: Image is noinit
"""
add_all attributes
add """
redef fun load_all(app: App)
do
+ main_image = app.load_image(\"images/{{{document.drawing_name}}}.png\")
"""
add_all load_exprs
add """
end
end
+# Nit module targeting the Gamnit framework
+#
+# Gamnit's `Texture` already manage the lazy loading, no need to do it here.
+class GamnitImageSetSrc
+ super ImageSetSrc
+
+ private fun attributes: Array[String]
+ do
+ # Separate the images from the arrays of images
+ var single_images = new Array[Image]
+ var arrays_of_images = new HashMap[String, Array[Image]]
+
+ for image in images do
+ var nit_name = image.name
+ var last_char = nit_name.chars.last
+ if last_char.to_s.is_numeric then
+
+ # Is an array
+ nit_name = nit_name.substring(0, nit_name.length-1)
+ if not arrays_of_images.keys.has(nit_name) then
+ # Create a new array
+ var array = new Array[Image]
+ arrays_of_images[nit_name] = array
+ end
+
+ arrays_of_images[nit_name].add image
+ else
+ # Is a single image
+ single_images.add image
+ end
+ end
+
+ # Attributes of the class
+ var attributes = new Array[String]
+ attributes.add "\tprivate var main_image = new Texture(\"images/{document.drawing_name}.png\")\n"
+
+ # Add single images to Nit source file
+ for image in single_images do
+ # Adapt coordinates to new top left and scale
+ var coordinates = document.coordinates(image)
+
+ attributes.add "\tvar {image.name}: Texture = main_image.subtexture({coordinates})\n"
+ end
+
+ # Add array of images too
+ for name, images in arrays_of_images do
+
+ var lines = new Array[String]
+ for image in images do
+ var coordinates = document.coordinates(image)
+ lines.add "\t\tmain_image.subtexture({coordinates})"
+ end
+
+ attributes.add """
+ var {{{name}}} = new Array[Texture].with_items(
+{{{lines.join(",\n")}}})
+"""
+ end
+
+ return attributes
+ end
+
+ redef fun rendering
+ do
+ add """
+# File generated by svg_to_png_and_nit, do not modify, redef instead
+
+import gamnit::display
+
+class {{{document.nit_class_name}}}
+
+"""
+ add_all attributes
+ add """
+end
+"""
+ end
+end
+
redef class Int
- fun adapt(d: Int, scale: Float): Int
+ # Magic adaption of this coordinates to the given `margin` and `scale`
+ fun adapt(margin: Int, scale: Float): Int
do
- var corrected = self-d
+ var corrected = self-margin
return (corrected.to_f*scale).to_i
end
+ # The first power of to equal or greater than `self`
fun next_pow2: Int
do
var p = 2
end
end
-var opt_out_src = new OptionString("Path to output source file", "--src", "-s")
+var opt_out_src = new OptionString("Path to output source file (folder or file)", "--src", "-s")
var opt_assets = new OptionString("Path to assert dir where to put PNG files", "--assets", "-a")
-var opt_scale = new OptionFloat("Apply scaling to exported images (defaut at 1.0 of 90dpi)", 1.0, "--scale", "-x")
+var opt_scale = new OptionFloat("Apply scaling to exported images (default at 1.0 of 90dpi)", 1.0, "--scale", "-x")
+var opt_gamnit = new OptionBool("Target the Gamnit framework (by default it targets Mnit)", "--gamnit", "-g")
+var opt_pow2 = new OptionBool("Round the image size to the next power of 2", "--pow2")
var opt_help = new OptionBool("Print this help message", "--help", "-h")
var opt_context = new OptionContext
-opt_context.add_option(opt_out_src, opt_assets, opt_scale, opt_help)
+opt_context.add_option(opt_out_src, opt_assets, opt_scale, opt_gamnit, opt_pow2, opt_help)
opt_context.parse(args)
var rest = opt_context.rest
var src_path = opt_out_src.value
if src_path == null then src_path = "src"
-if not src_path.file_exists then
+if not src_path.file_exists and src_path.file_extension != "nit" then
stderr.write "Source dir '{src_path}' does not exist (use --src)\n"
exit 1
end
var scale = opt_scale.value
-var arrays_of_images = new Array[String]
-
for drawing in drawings do
var drawing_name = drawing.basename(".svg")
while not proc.eof do
var line = proc.read_line
var words = line.split(",")
-
+
if words.length == 5 then
var id = words[0]
end
proc.close
- # Nit class
- var nit_class_name = drawing_name.chars.first.to_s.to_upper + drawing_name.substring_from(1) + "Images"
- var nit_src = new ImageSetSrc(nit_class_name)
- nit_src.attributes.add "\tprivate var main_image: Image is noinit\n"
- nit_src.load_exprs.add "\t\tmain_image = app.load_image(\"images/{drawing_name}.png\")\n"
# Sort images by name, it prevents Array errors and looks better
alpha_comparator.sort(images)
- # Add images to Nit source file
- for image in images do
- # Adapt coordinates to new top left and scale
- var x = image.x.adapt(min_x, scale)
- var y = image.y.adapt(min_y, scale)
- var w = (image.w.to_f*scale).to_i
- var h = (image.h.to_f*scale).to_i
+ var document = new Document(drawing_name, scale, min_x, max_x, min_y, max_y)
- var nit_name = image.name
- var last_char = nit_name.chars.last
- if last_char.to_s.is_numeric then
- # Array of images
- # TODO support more than 10 images in an array
-
- nit_name = nit_name.substring(0, nit_name.length-1)
- if not arrays_of_images.has(nit_name) then
- # Create class attribute to store Array
- arrays_of_images.add(nit_name)
- nit_src.attributes.add "\tvar {nit_name} = new Array[Image]\n"
- end
- nit_src.load_exprs.add "\t\t{nit_name}.add(main_image.subimage({x}, {y}, {w}, {h}))\n"
- else
- # Single image
- nit_src.attributes.add "\tvar {nit_name}: Image is noinit\n"
- nit_src.load_exprs.add "\t\t{nit_name} = main_image.subimage({x}, {y}, {w}, {h})\n"
- end
+ # Nit class
+ var nit_src: ImageSetSrc
+ if opt_gamnit.value then
+ nit_src = new GamnitImageSetSrc(document, images)
+ else
+ nit_src = new MnitImageSetSrc(document, images)
+ end
+
+ if not src_path.file_extension == "nit" then
+ src_path = src_path/drawing_name+".nit"
end
# Output source file
- var src_file = new FileWriter.open("{src_path}/{drawing_name}.nit")
+ var src_file = new FileWriter.open(src_path)
nit_src.write_to(src_file)
src_file.close
- # Find closest power of 2
- var dx = max_x - min_x
- max_x = dx.next_pow2 + min_x
+ # Find next power of 2
+ if opt_pow2.value then
+ var dx = max_x - min_x
+ max_x = dx.next_pow2 + min_x
- var dy = max_y - min_y
- max_y = dy.next_pow2 + min_y
+ var dy = max_y - min_y
+ max_y = dy.next_pow2 + min_y
+ end
# Inkscape's --export-area inverts the Y axis. It uses the lower left corner of
# the drawing area where as queries return coordinates from the top left.
mkdir -p bin
../../bin/nitc src/nitiwiki.nit -o bin/nitiwiki
-check: tests
-tests: nitiwiki
+check: nitiwiki
cd tests; make
doc:
To add content in your wiki simply add markdown files (with `.md` extension) into the `pages/` folder.
+#### Write content
+
+Nitiwiki only support content written in
+[markdown format](http://daringfireball.net/projects/markdown/).
+
+#### Link wiki articles
+
+In nitiwiki, linking to a section or an article is done using the *wikilinks*.
+
+Wikilinks provide easy linking between pages of the wiki.
+To create a wikilink, just put the name of the page to link to in double brackets.
+For example `[[WikiLink]]`.
+
+If you ever need to write something like `[[WikiLink]]` without creating a wikilink,
+just prefix it with a `\\`, like `\\[[WikiLink]]`.
+
+There are some special linking precedence that come into play when linking between
+sections and sub-sections.
+
+Nitiwiki will chose the first entry that match the given wikilinks in that order:
+1. Looks in the current section
+2. Looks in the current section children recursively
+3. Looks in the current section parents until root
+
+To link to or from a subpage, you can use a regular wikilink that does not
+contain the name of the parent directory of the subpage.
+Nikiwiki descends the directory hierarchy looking for a page that matches your link.
+
+For example, if `FooBar/SubPage` links to `OtherPage`, nikiwiki will first prefer
+pointing the link to `FooBar/SubPage/OtherPage` if it exists, next to
+`FooBar/OtherPage` and finally to `OtherPage` in the root of the wiki.
+
+You can also specify a link that contains a relative section name,
+like `FooBar/OtherPage` to specify what page to link to.
+
+You can also use `/` at the start of a link, to specify exactly which page to link to,
+when there are multiple pages with similar names and the link goes to the wrong page by default.
+For example, linking from `FooBar/SubPage` to `/OtherPage` will link to the `OtherPage`
+in the root of the wiki, even if there is a `FooBar/OtherPage`.
+
+It's also possible to write a wikilink that uses something other than the page
+name as the link text.
+For example `[[Contact|Contact me!]]` links to the `Contact` page, but the link
+will appear like this: `Contact me!`.
+
+You can link to an anchor inside a page, using something like `[[WikiLink#foo]]`.
+
+#### Render the wiki in HTML
+
Once you have done your changes, use:
nitiwiki --status
end
# --status
-if opt_status.value or args.is_empty then
+if opt_status.value or
+ (not opt_clean.value and
+ not opt_fetch.value and
+ not opt_render.value and
+ not opt_rsync.value) then
wiki.parse
wiki.status
end
module wiki_base
import template::macro
-import markdown
import opts
import ini
end
end
+ # Render output.
+ fun render do end
+
# Show wiki status.
fun status do
print "nitiWiki"
end
end
- # Display msg if `level >= verbose_level`
+ # Display msg if `level <= verbose_level`
fun message(msg: String, level: Int) do
if level <= verbose_level then print msg
end
# `path` is used to determine the ancestor sections.
protected fun new_article(path: String): WikiArticle do
if entries.has_key(path) then return entries[path].as(WikiArticle)
+ message("Found article `{path}`", 2)
var article = new WikiArticle.from_source(self, path)
var section = new_section(path.dirname)
section.add_child(article)
private fun try_load_config do
var cfile = wiki.expand_path(wiki.config.root_dir, src_path, wiki.config_filename)
if not cfile.file_exists then return
- wiki.message("Custom config for section {name}", 2)
+ wiki.message("Custom config for section {name}", 1)
config = new SectionConfig(cfile)
end
# Page content.
#
# What you want to be displayed in the page.
- var content: nullable Writable = null
-
- # Headlines ids and titles.
- var headlines = new ArrayMap[String, HeadLine]
+ var content: nullable Writable = null is writable
- # Create a new articleu sing a markdown source file.
+ # Create a new article using a markdown source file.
init from_source(wiki: Nitiwiki, md_file: String) do
src_full_path = md_file
init(wiki, md_file.basename(".md"))
- var md_proc = new MarkdownProcessor
- content = md_proc.process(md)
- headlines = md_proc.emitter.decorator.headlines
+ content = md
end
redef var src_full_path: nullable String = null
# Extract the markdown text from `source_file`.
#
# REQUIRE: `has_source`.
- var md: String is lazy do
- assert has_source
+ var md: nullable String is lazy do
+ if not has_source then return null
var file = new FileReader.open(src_full_path.to_s)
var md = file.read_all
file.close
# HTML wiki rendering
module wiki_html
-import wiki_base
+import wiki_links
redef class Nitiwiki
# Render HTML output looking for changes in the markdown sources.
- fun render do
+ redef fun render do
+ super
if not root_section.is_dirty and not force_render then return
var out_dir = expand_path(config.root_dir, config.out_dir)
out_dir.mkdir
end
redef class WikiEntry
-
- # Url to `self` once generated.
- fun url: String do return wiki.config.root_url.join_path(breadcrumbs.join("/"))
-
# Get a `<a>` template link to `self`
fun tpl_link: Writable do
return "<a href=\"{url}\">{title}</a>"
end
end
- # The index page for this section.
- #
- # If no file `index.md` exists for this section,
- # a summary is generated using contained articles.
- var index: WikiArticle is lazy do
- for child in children.values do
- if child isa WikiArticle and child.is_index then return child
- end
- return new WikiSectionIndex(wiki, "index", self)
- end
-
redef fun tpl_link do return index.tpl_link
# Render the section hierarchy as a html tree.
end
end
- redef fun url do
- if parent == null then
- return wiki.config.root_url.join_path("{name}.html")
- else
- return parent.url.join_path("{name}.html")
- end
- end
-
- # Is `self` an index page?
- #
- # Checks if `self.name == "index"`.
- fun is_index: Bool do return name == "index"
-
redef fun render do
+ super
if not is_dirty and not wiki.force_render then return
wiki.message("Render article {name}", 2)
var file = out_full_path
file.dirname.mkdir
tpl_page.write_to_file file
- super
end
end
# A `WikiArticle` that contains the section index tree.
-class WikiSectionIndex
- super WikiArticle
-
- # The section described by `self`.
- var section: WikiSection
-
- redef fun title do return section.title
-
- redef fun url do return section.url
+redef class WikiSectionIndex
redef var is_dirty = false
--- /dev/null
+# 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.
+
+# Wiki internal links handling.
+module wiki_links
+
+import wiki_base
+intrude import markdown
+
+redef class Nitiwiki
+ # Looks up a WikiEntry by its `name`.
+ #
+ # Rules are:
+ # 1. Looks in the current section
+ # 2. Looks in the current section children
+ # 3. Looks in the current section parent
+ # 4. Looks up to wiki root
+ #
+ # Returns `null` if no article can be found.
+ fun lookup_entry_by_name(context: WikiEntry, name: String): nullable WikiEntry do
+ var section = context.parent
+ var res = section.lookup_entry_by_name(name)
+ if res != null then return res
+ while section != null do
+ if section.name == name then return section
+ if section.children.has_key(name) then return section.children[name]
+ section = section.parent
+ end
+ return null
+ end
+
+ # Looks up a WikiEntry by its `title`.
+ #
+ # Rules are:
+ # 1. Looks in the current section
+ # 2. Looks in the current section children
+ # 3. Looks in the current section parent
+ # 4. Looks up to wiki root
+ #
+ # Returns `null` if no article can be found.
+ fun lookup_entry_by_title(context: WikiEntry, title: String): nullable WikiEntry do
+ var section = context.parent
+ var res = section.lookup_entry_by_title(title)
+ if res != null then return res
+ while section != null do
+ if section.title == title then return section
+ for child in section.children.values do
+ if child.title == title then return child
+ end
+ section = section.parent
+ end
+ return null
+ end
+
+ # Looks up a WikiEntry by its `path`.
+ #
+ # Path can be relative from `context` like `context/entry`.
+ # Or absolute like `/entry1/entry2`.
+ #
+ # Returns `null` if no article can be found.
+ fun lookup_entry_by_path(context: WikiEntry, path: String): nullable WikiEntry do
+ var entry = context.parent
+ var parts = path.split_with("/")
+ if path.has_prefix("/") then
+ entry = root_section
+ if parts.is_empty then return root_section.index
+ parts.shift
+ end
+ while not parts.is_empty do
+ var name = parts.shift
+ if name.is_empty then continue
+ if not entry.children.has_key(name) then return null
+ entry = entry.children[name]
+ end
+ return entry
+ end
+end
+
+redef class WikiEntry
+
+ # Url to `self` once generated.
+ fun url: String do return wiki.config.root_url.join_path(breadcrumbs.join("/"))
+
+ redef fun render do
+ super
+ if not is_dirty and not wiki.force_render then return
+ end
+
+ # Search in `self` then `self.children` if an entry has the name `name`.
+ fun lookup_entry_by_name(name: String): nullable WikiEntry do
+ if children.has_key(name) then return children[name]
+ for child in children.values do
+ var res = child.lookup_entry_by_name(name)
+ if res != null then return res
+ end
+ return null
+ end
+
+ # Search in `self` then `self.children` if an entry has the title `title`.
+ fun lookup_entry_by_title(title: String): nullable WikiEntry do
+ for child in children.values do
+ if child.title == title then return child
+ end
+ for child in children.values do
+ var res = child.lookup_entry_by_title(title)
+ if res != null then return res
+ end
+ return null
+ end
+end
+
+redef class WikiSection
+
+ # The index page for this section.
+ #
+ # If no file `index.md` exists for this section,
+ # a summary is generated using contained articles.
+ var index: WikiArticle is lazy do
+ for child in children.values do
+ if child isa WikiArticle and child.is_index then return child
+ end
+ return new WikiSectionIndex(wiki, "index", self)
+ end
+end
+
+redef class WikiArticle
+
+ # Headlines ids and titles.
+ var headlines = new ArrayMap[String, HeadLine]
+
+ # Is `self` an index page?
+ #
+ # Checks if `self.name == "index"`.
+ fun is_index: Bool do return name == "index"
+
+ redef fun url do
+ if parent == null then
+ return wiki.config.root_url.join_path("{name}.html")
+ else
+ return parent.url.join_path("{name}.html")
+ end
+ end
+
+ redef fun render do
+ super
+ if not is_dirty and not wiki.force_render or not has_source then return
+ var md_proc = new NitiwikiMdProcessor(wiki, self)
+ content = md_proc.process(md.as(not null))
+ headlines.recover_with(md_proc.emitter.decorator.headlines)
+ end
+end
+
+# A `WikiArticle` that contains the section index tree.
+class WikiSectionIndex
+ super WikiArticle
+
+ # The section described by `self`.
+ var section: WikiSection
+
+ redef fun title do return section.title
+
+ redef fun url do return section.url
+end
+
+# A MarkdownProcessor able to parse wiki links.
+class NitiwikiMdProcessor
+ super MarkdownProcessor
+
+ # Wiki used to resolve links.
+ var wiki: Nitiwiki
+
+ # Article parsed by `self`.
+ #
+ # Used to contextualize links.
+ var context: WikiArticle
+
+ init do
+ emitter = new MarkdownEmitter(self)
+ emitter.decorator = new NitiwikiDecorator(wiki, context)
+ end
+
+ redef fun token_at(text, pos) do
+ var token = super
+ if not token isa TokenLink then return token
+ if pos + 1 < text.length then
+ var c = text[pos + 1]
+ if c == '[' then return new TokenWikiLink(pos, c)
+ end
+ return token
+ end
+end
+
+private class NitiwikiDecorator
+ super HTMLDecorator
+
+ # Wiki used to resolve links.
+ var wiki: Nitiwiki
+
+ # Article used to contextualize links.
+ var context: WikiArticle
+
+ fun add_wikilink(v: MarkdownEmitter, link: Text, name, comment: nullable Text) do
+ var wiki = v.processor.as(NitiwikiMdProcessor).wiki
+ var target: nullable WikiEntry = null
+ var anchor: nullable String = null
+ if link.has("#") then
+ var parts = link.split_with("#")
+ link = parts.first
+ anchor = parts.subarray(1, parts.length - 1).join("#")
+ end
+ if link.has("/") then
+ target = wiki.lookup_entry_by_path(context, link.to_s)
+ else
+ target = wiki.lookup_entry_by_name(context, link.to_s)
+ if target == null then
+ target = wiki.lookup_entry_by_title(context, link.to_s)
+ end
+ end
+ v.add "<a "
+ if target != null then
+ if name == null then name = target.title
+ link = target.url
+ else
+ wiki.message("Warning: unknown wikilink `{link}` (in {context.src_path.as(not null)})", 0)
+ v.add "class=\"broken\" "
+ end
+ v.add "href=\""
+ append_value(v, link)
+ if anchor != null then append_value(v, "#{anchor}")
+ v.add "\""
+ if comment != null and not comment.is_empty then
+ v.add " title=\""
+ append_value(v, comment)
+ v.add "\""
+ end
+ v.add ">"
+ if name == null then name = link
+ v.emit_text(name)
+ v.add "</a>"
+ end
+end
+
+# A NitiWiki link token.
+#
+# Something of the form `[[foo]]`.
+#
+# Allowed formats:
+#
+# * `[[Wikilink]]`
+# * `[[Wikilink/Bar]]`
+# * `[[Wikilink#foo]]`
+# * `[[Wikilink/Bar#foo]]`
+# * `[[title|Wikilink]]`
+# * `[[title|Wikilink/Bar]]`
+# * `[[title|Wikilink/Bar#foo]]`
+class TokenWikiLink
+ super TokenLink
+
+ redef fun emit_hyper(v) do
+ v.decorator.as(NitiwikiDecorator).add_wikilink(v, link.as(not null), name, comment)
+ end
+
+ redef fun check_link(v, out, start, token) do
+ var md = v.current_text
+ var pos = start + 2
+ var tmp = new FlatBuffer
+ pos = md.read_md_link_id(tmp, pos)
+ if pos < start then return -1
+ var name = tmp.write_to_string
+ if name.has("|") then
+ var parts = name.split_once_on("|")
+ self.name = parts.first
+ self.link = parts[1]
+ else
+ self.name = null
+ self.link = name
+ end
+ pos += 1
+ pos = md.skip_spaces(pos)
+ if pos < start then return -1
+ pos += 1
+ return pos
+ end
+end
-nitiwiki
+../bin/nitiwiki
+++ /dev/null
-nitiwiki --config wiki1/config.ini --clean --render -v
+++ /dev/null
-nitiwiki --config wiki1/config.ini --clean --status
+++ /dev/null
-Render section out
-Render section out/sec1
-Render section out/sec2
-Render auto-index for section out/sec2
-Render section out/sec2/sub-sec21
-Render section out/sec2/sub-sec22
--- /dev/null
+Render section out
--- /dev/null
+nitiWiki
+name: wiki1
+config: wiki1/config.ini
+url: http://localhost/
+
+There is modified files:
+ + pages
+ + /pages/index.md
+
+Use nitiwiki --render to render modified files
--- /dev/null
+Custom config for section sec2
+Render section out
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Warning: unknown wikilink `Not Found` (in /pages/index.md)
+Warning: unknown wikilink `/not/found` (in /pages/index.md)
+Warning: unknown wikilink `not/found` (in /pages/index.md)
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Warning: unknown wikilink `not found` (in /pages/index.md)
+Render section out/sec1
+Render section out/sec2
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `Not Found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `/not/found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not/found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Warning: unknown wikilink `not found` (in /pages/sec2/index.md)
+Render section out/sec2/sub-sec21
+Render section out/sec2/sub-sec22
nitiWiki
-name: wiki1
-config: wiki1/config.ini
+name: wiki2
+config: wiki2/config.ini
url: http://localhost/
There is modified files:
+ pages
+ + /pages/contact.md
+ /pages/index.md
+ + /pages/other_page.md
+ pages/sec1
+ /pages/sec1/index.md
+ pages/sec2
+ + /pages/sec2/index.md
+ pages/sec2/sub-sec21
+ /pages/sec2/sub-sec21/index.md
+ pages/sec2/sub-sec22
+ /pages/sec2/sub-sec22/index.md
+ + /pages/sec2/sub-sec22/other.md
Use nitiwiki --render to render modified files
--- /dev/null
+../bin/nitiwiki --config wiki1/config.ini --clean --render -v
--- /dev/null
+../bin/nitiwiki --config wiki1/config.ini --clean --status
--- /dev/null
+dummy { margin: 0 }
+
+a.broken { font-style: italic; color: red }
--- /dev/null
+wiki.name=wiki2
+wiki.root_dir=wiki2
--- /dev/null
+# Test wikilinks
+
+## Link to entries by name
+
+* Link to [[sec1]]
+* Link to [[sec2]]
+* Link to [[contact]]
+* Link to [[other_page]]
+* Link to [[other]]
+* Link to [[not found]]
+
+## Link to entries by title
+
+* Link to [[Sec1]]
+* Link to [[Section 2]]
+* Link to [[Contact]]
+* Link to [[Other Page]]
+* Link to [[Other]]
+* Link to [[Not Found]]
+
+## Link to entries by absolute path
+
+* Link to [[/index]]
+* Link to [[/sec1]]
+* Link to [[/sec1/index]]
+* Link to [[/sec1/]]
+* Link to [[/sec2/sub-sec22]]
+* Link to [[/sec2/sub-sec22/]]
+* Link to [[/sec2/sub-sec22/index]]
+* Link to [[/sec2/sub-sec22/other]]
+* Link to [[/not/found]]
+
+## Link to entries by relative path
+
+* Link to [[sec1]]
+* Link to [[sec1/index]]
+* Link to [[sec1/]]
+* Link to [[sec2/sub-sec22]]
+* Link to [[sec2/sub-sec22/]]
+* Link to [[sec2/sub-sec22/index]]
+* Link to [[sec2/sub-sec22/other]]
+* Link to [[not/found]]
+
+## Link with custom text
+
+* Link to [[1Fooi|Other Page]]
+* Link to [[2 Foo bar|/sec2/sub-sec22/index]]
+* Link to [[3|sec2/sub-sec22/other]]
+* Link to [[foo>bar>bar|other_page]]
+* Link to [[5|not found]]
+
+## Link with anchors
+
+* Link to [[Other Page#Foo]]
+* Link to [[/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[sec2/sub-sec22/other#3]]
+* Link to [[other_page#4]]
+* Link to [[not found#5_lol]]
+* Link to [[1|Other Page#Foo]]
+* Link to [[2|/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[3|sec2/sub-sec22/other#3]]
+* Link to [[4|other_page#4foobar#baz]]
+* Link to [[5|not found#5]]
--- /dev/null
+# Other Page
--- /dev/null
+# Section 1
--- /dev/null
+section.title=Section 2
--- /dev/null
+# Test wikilinks
+
+## Link to entries by name
+
+* Link to [[sec1]]
+* Link to [[sec2]]
+* Link to [[contact]]
+* Link to [[other_page]]
+* Link to [[not found]]
+
+## Link to entries by title
+
+* Link to [[Sec1]]
+* Link to [[Section 2]]
+* Link to [[Contact]]
+* Link to [[Other Page]]
+* Link to [[Not Found]]
+
+## Link to entries by absolute path
+
+* Link to [[/index]]
+* Link to [[/sec1]]
+* Link to [[/sec1/index]]
+* Link to [[/sec1/]]
+* Link to [[/sec2/sub-sec22]]
+* Link to [[/sec2/sub-sec22/]]
+* Link to [[/sec2/sub-sec22/index]]
+* Link to [[/sec2/sub-sec22/other]]
+* Link to [[/not/found]]
+
+## Link to entries by relative path
+
+* Link to [[sub-sec22]]
+* Link to [[sub-sec22/index]]
+* Link to [[sub-sec22/other]]
+* Link to [[sub-sec22/]]
+* Link to [[not/found]]
+
+## Link with custom text
+
+* Link to [[1Foo|Other Page]]
+* Link to [[2 Foo bar|/sec2/sub-sec22/index]]
+* Link to [[3|sub-sec22/other]]
+* Link to [[4foo>bar>baz|other_page]]
+* Link to [[5|not found]]
+
+## Link with anchors
+
+* Link to [[Other Page#Foo]]
+* Link to [[/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[sub-sec22/other#3]]
+* Link to [[other_page#4]]
+* Link to [[not found#5_lol]]
+* Link to [[1|Other Page#Foo]]
+* Link to [[2|/sec2/sub-sec22/index#2 Foo bar]]
+* Link to [[3|sub-sec22/other#3]]
+* Link to [[4|other_page#4foobar#baz]]
+* Link to [[5|not found#5]]
--- /dev/null
+# Section 2-1
--- /dev/null
+# Section 2-2
--- /dev/null
+# Other page
--- /dev/null
+<div class="row footer">
+ <div class="container-fluid">
+ <div class="well well-sm">
+ <p><strong>%TITLE% © %YEAR%</strong></p>
+ <p class="text-muted"><em>last modification %GEN_TIME%</em></p>
+ <p class="text-muted">Proudly powered by
+ <a href="http://nitlanguage.org">nit</a>!</p>
+ </div>
+ </div>
+</div>
--- /dev/null
+<div class="container-fluid header">
+ <div class="container">
+ <div class="header">
+ <a href="http://uqam.ca"><img src="%ROOT_URL%/%LOGO%" alt="logo" /></a>
+ <h2>%SUBTITLE%</h2>
+ <h1>%TITLE%</h1>
+ </div>
+ </div>
+</div>
--- /dev/null
+<nav class="menu" role="navigation">
+ <div class="container">
+ <!-- Brand and toggle get grouped for better mobile display -->
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="%ROOT_URL%index.html">%TITLE%</a>
+ </div>
+ <!-- Collect the nav links, forms, and other content for toggling -->
+ <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ %MENUS%
+ </ul>
+ </div><!-- /.navbar-collapse -->
+ </div>
+</nav>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>%TITLE%</title>
+
+ <link href="%ROOT_URL%/assets/vendors/bootstrap/bootstrap-3.2.0-dist/css/bootstrap.min.css" rel="stylesheet">
+ <link href="%ROOT_URL%/assets/css/main.css" rel="stylesheet">
+
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+ <![endif]-->
+ </head>
+ <body>
+ %HEADER%
+ %TOP_MENU%
+ <div class="container">
+ <div class="row">
+ %BODY%
+ </div>
+ %FOOTER%
+ </div>
+
+ <script src="%ROOT_URL%/vendors/jquery/jquery-1.11.1.min.js"></script>
+ <script src="%ROOT_URL%/vendors/bootstrap/bootstrap-3.2.0-dist/js/bootstrap.min.js"></script>
+ </body>
+</html>
--- /dev/null
+../bin/nitiwiki --config wiki2/config.ini --clean --render -v
--- /dev/null
+../bin/nitiwiki --config wiki2/config.ini --clean --status
--- /dev/null
+# 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:
+
+ ./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:
+
+ ./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`:
+
+ ./web localhost 3000 "/nitrpg"
+
+Leave it empty if NitRPG is installed at the root of the domain:
+
+ ./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/privat/nit/issues/1161).
var key = self.key / achievement.key
if game.store.has_key(key) then return
stats.inc("achievements")
- achievement.save_in(self)
+ achievement.save_in(self.key)
save
end
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
redef class GameEntity
# Saves `event` in `self`.
- fun add_event(event: GameEvent) do event.save_in(self)
+ fun add_event(event: GameEvent) do event.save_in(self.key)
# List all events registered in this entity.
#
# Date are stored under `self.key`.
fun save do game.store.store_object(key, to_json)
- # Saves `self` state into `target` key data.
+ # Saves `self` state under `key` data.
#
- # Data are stored under `target.key / self.key`.
- fun save_in(target: GameEntity) do
- game.store.store_object(target.key / key, to_json)
+ # Data are stored under `key / self.key`.
+ fun save_in(key: String) do
+ game.store.store_object(key / self.key, to_json)
end
# Json representation of `self`.
# 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.
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
# Rewards player for review comments.
#
- # Actuallty we look if the comment contains the string `"+1"`.
- #
# TODO only give nitcoins if reviewers < 2
redef fun react_player_event(r, game) do
- # FIXME use a more precise way to locate reviews
- if comment.body.has("\\+1\\b".to_re) then
+ if comment.is_ack then
react_player_review(r, game)
end
end
redef class GameEntity
- # Statistics for this entity.
- fun stats: GameStats is abstract
-
- # Load statistics for this `MEntity` if any.
- fun load_statistics: nullable GameStats do
- var key = self.key / "statistics"
- if not game.store.has_key(key) then return null
- var json = game.store.load_object(key)
- return new GameStats.from_json(game, json)
- end
+ # Statistics manager for this entity.
+ fun stats: GameStatsManager is abstract
end
redef class Game
- redef var stats is lazy do
- return load_statistics or else new GameStats(game)
- end
+ redef var stats is lazy do return new GameStatsManager(game, self)
redef fun save do
super
- stats.save_in(self)
+ stats.save_in(self.key)
end
redef fun pretty do
redef class Player
- redef var stats is lazy do
- return load_statistics or else new GameStats(game)
- end
+ redef var stats is lazy do return new GameStatsManager(game, self)
redef fun save do
super
- stats.save_in(self)
+ stats.save_in(self.key)
end
+ 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
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
+
+ redef var key = "stats"
+
+ # Returns the `GameStats` instance for the overall statistics.
+ var overall: GameStats is lazy do
+ return load_stats_for("all")
+ end
+
+ # Returns the `GameStats` instance for the current year statistics.
+ var yearly: GameStats is lazy do
+ var date = new Tm.gmtime
+ var key = date.strftime("%Y")
+ return load_stats_for(key)
+ end
+
+ # Returns the `GameStats` instance for the current month statistics.
+ var monthly: GameStats is lazy do
+ var date = new Tm.gmtime
+ var key = date.strftime("%Y-%m")
+ return load_stats_for(key)
+ end
+
+ # Returns the `GameStats` instance for the current day statistics.
+ var daily: GameStats is lazy do
+ var date = new Tm.gmtime
+ var key = date.strftime("%Y-%m-%d")
+ return load_stats_for(key)
+ end
+
+ # Returns the `GameStats` instance for the current week statistics.
+ var weekly: GameStats is lazy do
+ var date = new Tm.gmtime
+ var key = date.strftime("%Y-W%U")
+ return load_stats_for(key)
+ end
+
+ # Load statistics for a `period` key.
+ fun load_stats_for(period: String): GameStats do
+ var key = owner.key / self.key / period
+ if not game.store.has_key(key) then
+ return new GameStats(game, period)
+ end
+ var json = game.store.load_object(key)
+ return new GameStats.from_json(game, period, json)
+ 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_in(key) do
+ overall.save_in(key / self.key)
+ yearly.save_in(key / self.key)
+ monthly.save_in(key / self.key)
+ daily.save_in(key / self.key)
+ weekly.save_in(key / self.key)
+ end
+
+ redef fun pretty do return overall.pretty
+end
+
# Game statistics structure that can be saved as a `GameEntity`.
class GameStats
super GameEntity
redef var game
- redef var key = "statistics"
+ # The pedriod these stats are about.
+ var period: String
+
+ redef fun key do return period
- # Load `self` from saved data
- init from_json(game: Game, json: JsonObject) do
- self.game = game
+ # Load `self` from saved data.
+ init from_json(game: Game, period: String, json: JsonObject) do
for k, v in json do self[k] = v.as(Int)
end
return obj
end
- # Decrements the value of `key` statistic entry by 1.
- fun dec(key: String) do
- if not has_key(key) then
- self[key] = 0
- else
- self[key] -= 1
- end
- end
-
redef fun pretty do
var res = new FlatBuffer
for k, v in self do
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
module panels
import templates_events
+import markdown
# A panel can be displayed in a html page.
#
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> "
+ 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> "
+ 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
redef fun render_title do
add "<span class=\"glyphicon glyphicon-check\"></span> "
- add "Review pull requests to gain nitcoins!"
+ 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 issues = game.repo.search_issues(q)
+ var q2 = "is:open label:request_for_comments sort:updated-asc " +
+ "-involves:{player.name}"
+
+ var issues = new ArraySet[Issue]
+ issues.add_all game.repo.search_issues(q).as(not null)
+ issues.add_all game.repo.search_issues(q2).as(not null)
+ 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}}}" 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> "
+ 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.repo.search_issues(q).as(not null)
+ issues.add_all game.repo.search_issues(q2).as(not null)
if issues.is_empty then
- add "<em>No pull request to review yet...</em>"
+ add "<em>No work to do yet...</em>"
return
end
for issue in issues do
rsp.body = page.write_to_string
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 api.was_error or repo == null then return null
+ var game = new Game(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]
+ var rpgdir = "nitrpg_data"
+ if not rpgdir.file_exists then return res
+ for user in rpgdir.files do
+ for repo in "{rpgdir}/{user}".files do
+ var game = load_game("{user}/{repo}")
+ if game != null then res.add game
+ end
+ 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.write_to_string
+ 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.write_to_string
+ return response
+ end
end
# An action that require a game.
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 /repos/:owner/:repo."
+ var msg = "Bad request: should look like /games/:owner/:repo."
return bad_request(msg)
end
- var repo = new Repo(api, "{owner}/{repo_name}")
- game = new Game(api, repo)
- game.root_url = root_url
- if api.was_error then
+ 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)
# 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.
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)
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.write_to_string
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."
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.write_to_string
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.write_to_string
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."
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
--- /dev/null
+bin/
+tests/out/
+stats.json
--- /dev/null
+# 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.
+
+all: refund
+
+refund:
+ mkdir -p bin
+ ../../bin/nitc src/refund.nit -o bin/refund
+
+check: refund
+ cd tests; make
+
+clean:
+ rm -rf bin
+ rm -rf -- .nit_compile 2> /dev/null || true
+ cd tests; make clean
--- /dev/null
+# 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])
--- /dev/null
+# 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
+ self.id = 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
+ self.id = 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
+ self.value = (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
--- /dev/null
+# 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
+
+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 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.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.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: RefundStats) do
+ write_output(stats.to_json.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: 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 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 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 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 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 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 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 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
--- /dev/null
+# 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.
+
+all: tests
+
+tests: clean
+ ./tests.sh
+
+clean:
+ rm -rf out/
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200,00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "B100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200,00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200,00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "reclamations": []
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "D100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "E100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 150,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ },
+ {
+ "soin": 175,
+ "date": "2015-01-11",
+ "montant": "200.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01"
+}
--- /dev/null
+{
+ "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$"
+ }
+ }
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [1, 2, 3]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {},
+ {
+ "soin": 200,
+ "date": "2015-01-13",
+ "montant": "90.00$"
+ },
+ {
+ "soin": 334,
+ "date": "2015-01-23",
+ "montant": "125.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "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$"
+ }
+ ]
+}
--- /dev/null
+{
+ "dossier": "A100323",
+ "mois": "2015-01",
+ "reclamations": [
+ {
+ "soin": 900,
+ "date": "2015-01-11",
+ "montant": "234.00$"
+ }
+ ]
+}
--- /dev/null
+{
+ "message": "Wrong format for `number` (expected XXXXXX got )"
+}
--- /dev/null
+{
+ "message": "Wrong format for `number` (expected XXXXXX got 1003233)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `number` (expected XXXXXX got 10032A)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `dossier` (expected String got Int)"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "dossier": "C100323",
+ "mois": "2015-01",
+ "remboursements": [],
+ "total": "0.0$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "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$"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got 1)"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got a)"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got Z)"
+}
--- /dev/null
+{
+ "message": "Wrong contract (expected A, B, C, D or E got 1)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key dossier)"
+}
--- /dev/null
+{
+ "message": "Wrong input file (Unexpected Eof; is acceptable instead: value)"
+}
--- /dev/null
+{
+ "message": "Wrong input type (expected JsonObject got JsonArray)"
+}
--- /dev/null
+{
+ "message": "Wrong input file (Unexpected Eof; is acceptable instead: members, pair)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key mois)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `mois` (expected String got Int)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `mois` (expected AAAA-MM got 2015\/01)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `mois` (expected AAAA-MM got 2015-23)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key date)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `date` (expected AAAA-MM-DD got 2015\/01\/11)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `mois` (expected AAAA-MM got 2015-13-32)"
+}
--- /dev/null
+{
+ "message": "Wrong `mois` for `soin` with id `100`"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key reclamations)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `number` (expected JsonArray got JsonObject)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `reclamations#0` (expected JsonObject got Int)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key soin)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key montant)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `montant` (expected XX.XX$ got ABCD)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `montant` (expected XX.XX$ got 234)"
+}
--- /dev/null
+{
+ "message": "Wrong format for `montant` (expected XX.XX$ got 234.00)"
+}
--- /dev/null
+{
+ "message": "Malformed input (missing key soin)"
+}
--- /dev/null
+{
+ "message": "Wrong type for `soin` (expected Int got FlatString)"
+}
--- /dev/null
+{
+ "message": "Unknown `soin` with id `900`"
+}
--- /dev/null
+#!/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)"
all:
mkdir -p bin/
- # Compile in global mode to silence warnings on unused GTK deprecated
- ../../bin/nitc --global --dir bin/ src/calculator_gtk.nit src/calculator_test.nit
+ ../../bin/nitc --dir bin/ src/calculator_gtk.nit src/calculator_test.nit
android:
mkdir -p bin/ res/
do
init_gtk
- win = new GtkWindow(0)
+ win = new GtkWindow(new GtkWindowType.toplevel)
+ win.connect_destroy_signal_to_quit
- container = new GtkGrid(5, 5, true)
- win.add(container)
+ container = new GtkGrid
+ win.add container
lbl_disp = new GtkLabel("_")
container.attach(lbl_disp, 0, 0, 5, 1)
--- /dev/null
+# 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.
+
+# Sample module showing the use of the i18n annotation
+module langannot is i18n
+
+import gettext
+
+class X
+ fun foo: String do
+ return "This String is a test"
+ end
+end
+
+var t = new X
+print t.foo
+
+print "This String is a test"
+
+print """Multiline string
+
+example
+
+
+of the language annotation capacities
+"""
+
+var s = "example"
+
+print "This superstring {s} rocks"
+
+print "This superstring %1 rocks".format(s)
--- /dev/null
+#: langannot::langannot 22--10:32, langannot::langannot 29--7:29
+msgid "This String is a test"
+msgstr "This String is a test"
+
+#: langannot::langannot 31--7:3
+msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
+msgstr "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
+
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr "example"
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr "This superstring %1 rocks"
+
+# Generated file, do not modify
--- /dev/null
+#: langannot::langannot 22--10:32, langannot::langannot 29--7:29
+msgid "This String is a test"
+msgstr "Cette chaîne de caractères est un test"
+
+#: langannot::langannot 31--7:3
+msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
+msgstr "Example de\n\nchaine multiligne\n\n\navec annotation de localisation\n"
+
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr "exemple"
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr "Cet %1 de superstring est génial"
+
+# Generated file, do not modify
--- /dev/null
+#: langannot::langannot 22--10:32, langannot::langannot 29--7:29
+msgid "This String is a test"
+msgstr "この文字列はてストです"
+
+#: langannot::langannot 31--7:3
+msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
+msgstr "複数行の文字列\n\nなサンプルプログラム\n\n\n新しい国際化アノテーションとともに\n"
+
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr "サンプル"
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr "このスパ文字列%1は驚くべきです"
+
+# Generated file, do not modify
--- /dev/null
+#: langannot::langannot 22--10:32, langannot::langannot 29--7:29
+msgid "This String is a test"
+msgstr ""
+
+#: langannot::langannot 31--7:3
+msgid "Multiline string\n\nexample\n\n\nof the language annotation capacities\n"
+msgstr ""
+
+#: langannot::langannot 39--9:17
+msgid "example"
+msgstr ""
+
+#: langannot::langannot 41--7:34, langannot::langannot 43--7:33
+msgid "This superstring %1 rocks"
+msgstr ""
+
+# Generated file, do not modify
fun test_intent
do
- intent = new Intent(self)
+ intent = new Intent
intent.action = intent_action.view.to_s
intent.data = "content://contacts/people/"
- intent.launch_activity
+ start_activity intent
intent.destroy
- intent = new Intent(self)
+ intent = new Intent
var p1 = new Point(10, 20)
intent["a_point"] = p1
var p2 = intent["a_point"]
--- /dev/null
+#!/usr/bin/env nit
+#
+# This file is part of NIT ( http://www.nitlanguage.org ).
+# This program is public domain
+
+# Task: Balanced brackets
+# SEE: <http://rosettacode.org/wiki/Balanced_brackets>
+module balanced_brackets
+
+# Are `[` and `]` balanced?
+# Other characters are ignored.
+#
+# assert is_balanced("[][[]]")
+# assert is_balanced("")
+# assert not is_balanced("[[]")
+# assert not is_balanced("][][")
+fun is_balanced(s: String): Bool
+do
+ var l = 0
+ for x in s.chars do
+ if x == '[' then
+ l += 1
+ else if x == ']' then
+ l -= 1
+ if l < 0 then return false
+ end
+ end
+ return l == 0
+end
+
+var n = 3
+if args.not_empty then n = args.first.to_i
+
+for i in [0..10[ do
+ var a = (['[', ']'] * n)
+ a.shuffle
+ var b = a.join("")
+ if is_balanced(b) then print "{b} is well-balanced" else print "{b} is not well-balanced"
+end
import native_app_glue
import dalvik
private import log
-private import android_data_store
+private import data_store
# Uses Android logs to print everything
redef fun print(text) do log_write(priority_info, app.log_prefix.to_cstring, text.to_s.to_cstring)
# Implements `app::data_store` using `shared_preferences`
#
# We use the shared preferences named "data_store" to store the data.
-module android_data_store
+module data_store
import app::data_store
private import shared_preferences
# `android.content.Intent` for the android platform
module intent_api10
-import native_app_glue
+import dalvik
import android::bundle
import serialization
private import json_serialization
extern class NativeIntent in "Java" `{ android.content.Intent `}
super JavaObject
+ new in "Java" `{ return new Intent(); `}
+
fun add_category(category: JavaString) in "Java" `{ recv.addCategory(category); `}
fun add_flags(flags: Int) in "Java" `{ recv.addFlags((int)flags); `}
fun filter_equals(other: NativeIntent): Bool in "Java" `{
# Services allowing to launch an activity and start/stop services
class Intent
- protected var intent: NativeIntent
- protected var context: NativeActivity
-
- init (app: App)
- do
- self.context = app.native_activity
- setup
- end
-
- private fun set_vars(intent: NativeIntent) do
- self.intent = intent.new_global_ref
- end
-
- private fun setup import context, intent, set_vars in "Java" `{
- Intent intent = new Intent();
- Intent_set_vars(recv, intent);
- `}
+ protected var intent: NativeIntent = (new NativeIntent).new_global_ref is lazy
# The general action to be performed
#
sys.jni_env.pop_local_frame
return self
end
- # Execute the intent and launch the appropriate application
- fun launch_activity do context.start_activity(intent)
-
- # Start a service that will be running until the `stop_service` call
- fun start_service do context.start_service(intent)
-
- # Stop service
- fun stop_service do context.stop_service(intent)
# Deletes intent global reference
fun destroy do self.intent.delete_global_ref
end
redef extern class NativeActivity
- fun start_activity(intent: NativeIntent) in "Java" `{ recv.startActivity(intent); `}
- fun start_service(intent: NativeIntent) in "Java" `{ recv.startService(intent); `}
- fun stop_service(intent: NativeIntent) in "Java" `{ recv.stopService(intent); `}
+ private fun start_activity(intent: NativeIntent) in "Java" `{ recv.startActivity(intent); `}
+ private fun start_service(intent: NativeIntent) in "Java" `{ recv.startService(intent); `}
+ private fun stop_service(intent: NativeIntent) in "Java" `{ recv.stopService(intent); `}
end
# Allows user to get values with enum-like syntax : `intent_action.main`
var collection = new HashSet[String]
fun add(element: JavaString) do collection.add element.to_s
end
+
+redef class App
+
+ # Execute the intent and launch the appropriate application
+ fun start_activity(intent: Intent) do native_activity.start_activity(intent.intent)
+
+ # Start a service that will be running until the `stop_service` call
+ fun start_service(intent: Intent) do native_activity.start_service(intent.intent)
+
+ # Stop service
+ fun stop_service(intent: Intent) do native_activity.stop_service(intent.intent)
+end
# Services to save/load data using `android.content.SharedPreferences` for the android platform
module shared_preferences_api10
-import native_app_glue
+import dalvik
import serialization
private import json_serialization
# Services to display a _toast_, a small popup on Android
module toast
-import native_app_glue
+import dalvik
in "Java" `{
import android.widget.Toast;
private fun native_toast(message: JavaString, is_long: Bool)
import native_activity in "Java" `{
- final android.app.NativeActivity context = App_native_activity(recv);
+ final android.app.Activity context = App_native_activity(recv);
final CharSequence final_message = message;
final int duration = is_long? Toast.LENGTH_LONG: Toast.LENGTH_SHORT;
# See the License for the specific language governing permissions and
# limitations under the License.
-# Views and services to use the Android native user interface
-#
-# Events, such as a button click, come from the UI thread and are then
-# passed to the main thread. It is recommended to specialize one of the
-# methods of the main thread to customize the response to a given event.
-#
-# This graph shows the path of a button click:
-# ~~~raw
-# UI Thread # Main thread
-#
-# User
-# |
-# V
-# Button::click_ui --> Button::click
-# |
-# V
-# App::catch_event
-# ~~~
-module ui is min_api_version 14
+# Native services from the `android.view` and `android.widget` namespaces
+module native_ui is min_api_version 14
import nit_activity
-import pthreads::concurrent_collections
in "Java" `{
import android.app.Activity;
import android.view.Gravity;
- import android.view.MotionEvent;
+ import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import java.util.*;
`}
-# An event from the `app.nit` framework
-interface AppEvent
- # Reaction to this event
- fun react do end
-end
-
-# A control click event
-class ClickEvent
- super AppEvent
-
- # Sender of this event
- var sender: Button
-
- redef fun react do sender.click self
-end
-
-# Receiver of events not handled directly by the sender
-interface EventCatcher
- fun catch_event(event: AppEvent) do end
-end
-
-redef class App
- super EventCatcher
-end
-
redef extern class NativeActivity
# Set the main layout of this activity
`}
end
-# An `Object` that raises events
-abstract class Eventful
- var event_catcher: EventCatcher = app is lazy, writable
-end
-
-#
-## Nity classes and services
-#
-
-# An Android control with text
-abstract class TextView
- super Finalizable
- super Eventful
-
- # Native Java variant to this Nity class
- type NATIVE: NativeTextView
-
- # The native Java object encapsulated by `self`
- var native: NATIVE is noinit
-
- # Get the text of this view
- fun text: String
- do
- var jstr = native.text
- var str = jstr.to_s
- jstr.delete_local_ref
- return str
- end
-
- # Set the text of this view
- fun text=(value: Text)
- do
- var jstr = value.to_s.to_java_string
- native.text = jstr
- jstr.delete_local_ref
- end
-
- # Get whether this view is enabled or not
- fun enabled: Bool do return native.enabled
-
- # Set if this view is enabled
- fun enabled=(val: Bool) do native.enabled = val
-
- # Set the size of the text in this view at `dpi`
- fun text_size=(dpi: Numeric) do native.text_size = dpi.to_f
-
- private var finalized = false
- redef fun finalize
- do
- if not finalized then
- native.delete_global_ref
- finalized = true
- end
- end
-end
-
-# An Android button
-class Button
- super TextView
-
- redef type NATIVE: NativeButton
-
- init
- do
- var native = new NativeButton(app.native_activity, self)
- self.native = native.new_global_ref
- end
-
- # Click event
- #
- # By default, this method calls `app.catch_event`. It can be specialized
- # with custom behavior or the receiver of `catch_event` can be changed
- # with `event_catcher=`.
- fun click(event: AppEvent) do event_catcher.catch_event(event)
-
- private fun click_from_native do click(new ClickEvent(self))
-end
-
-# An Android editable text field
-class EditText
- super TextView
-
- redef type NATIVE: NativeEditText
-
- init
- do
- var native = new NativeEditText(app.activities.first.native)
- self.native = native.new_global_ref
- end
-end
-
-#
-## Native classes
-#
-
# A `View` for Android
extern class NativeView in "Java" `{ android.view.View `}
super JavaObject
fun minimum_width=(val: Int) in "Java" `{ recv.setMinimumWidth((int)val); `}
fun minimum_height=(val: Int) in "Java" `{ recv.setMinimumHeight((int)val); `}
+
+ fun enabled: Bool in "Java" `{ return recv.isEnabled(); `}
+ fun enabled=(value: Bool) in "Java" `{
+ final View final_recv = recv;
+ final boolean final_value = value;
+
+ ((Activity)recv.getContext()).runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ final_recv.setEnabled(final_value);
+ }
+ });
+ `}
end
# A collection of `NativeView`
super NativeView
fun add_view(view: NativeView) in "Java" `{ recv.addView(view); `}
+
+ fun add_view_with_weight(view: NativeView, weight: Float)
+ in "Java" `{
+ recv.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, (float)weight));
+ `}
end
# A `NativeViewGroup` organized in a line
LinearLayout.LayoutParams.WRAP_CONTENT);
recv.addView(view, params);
`}
-
- fun add_view_with_weight(view: NativeView, weight: Float)
- in "Java" `{
- recv.addView(view, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, (float)weight));
- `}
end
# A `NativeViewGroup` organized as a grid
});
`}
- fun enabled: Bool in "Java" `{ return recv.isEnabled(); `}
- fun enabled=(value: Bool) in "Java" `{
- final TextView final_recv = recv;
- final boolean final_value = value;
-
- ((Activity)recv.getContext()).runOnUiThread(new Runnable() {
- @Override
- public void run() {
- final_recv.setEnabled(final_value);
- }
- });
- `}
-
fun gravity_center in "Java" `{
recv.setGravity(Gravity.CENTER);
`}
+ fun text_size: Float in "Java" `{
+ return recv.getTextSize();
+ `}
fun text_size=(dpi: Float) in "Java" `{
recv.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, (float)dpi);
`}
redef type SELF: NativeButton
- new (context: NativeActivity, sender_object: Object)
- import Button.click_from_native in "Java" `{
- final int final_sender_object = sender_object;
-
- return new Button(context){
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if(event.getAction() == MotionEvent.ACTION_DOWN) {
- Button_click_from_native(final_sender_object);
- return true;
- }
- return false;
- }
- };
- `}
-
redef fun new_global_ref: SELF import sys, Sys.jni_env `{
Sys sys = NativeButton_sys(recv);
JNIEnv *env = Sys_jni_env(sys);
--- /dev/null
+# This file is part of NIT (http://www.nitlanguage.org).
+#
+# Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# 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.
+
+# Views and services to use the Android native user interface
+module ui
+
+import native_ui
+
+# An event from the `app.nit` framework
+interface AppEvent
+ # Reaction to this event
+ fun react do end
+end
+
+# A control click event
+class ClickEvent
+ super AppEvent
+
+ # Sender of this event
+ var sender: Button
+
+ redef fun react do sender.click self
+end
+
+# Receiver of events not handled directly by the sender
+interface EventCatcher
+ fun catch_event(event: AppEvent) do end
+end
+
+redef class App
+ super EventCatcher
+end
+
+# An `Object` that raises events
+abstract class Eventful
+ var event_catcher: EventCatcher = app is lazy, writable
+end
+
+#
+## Nity classes and services
+#
+
+# An Android control with text
+abstract class TextView
+ super Finalizable
+ super Eventful
+
+ # Native Java variant to this Nity class
+ type NATIVE: NativeTextView
+
+ # The native Java object encapsulated by `self`
+ var native: NATIVE is noinit
+
+ # Get the text of this view
+ fun text: String
+ do
+ var jstr = native.text
+ var str = jstr.to_s
+ jstr.delete_local_ref
+ return str
+ end
+
+ # Set the text of this view
+ fun text=(value: Text)
+ do
+ var jstr = value.to_s.to_java_string
+ native.text = jstr
+ jstr.delete_local_ref
+ end
+
+ # Get whether this view is enabled or not
+ fun enabled: Bool do return native.enabled
+
+ # Set if this view is enabled
+ fun enabled=(val: Bool) do native.enabled = val
+
+ # Set the size of the text in this view at `dpi`
+ fun text_size=(dpi: Numeric) do native.text_size = dpi.to_f
+
+ private var finalized = false
+ redef fun finalize
+ do
+ if not finalized then
+ native.delete_global_ref
+ finalized = true
+ end
+ end
+end
+
+# An Android button
+class Button
+ super TextView
+
+ redef type NATIVE: NativeButton
+
+ init
+ do
+ var native = new NativeButton(app.native_activity, self)
+ self.native = native.new_global_ref
+ end
+
+ # Click event
+ #
+ # By default, this method calls `app.catch_event`. It can be specialized
+ # with custom behavior or the receiver of `catch_event` can be changed
+ # with `event_catcher=`.
+ fun click(event: AppEvent) do event_catcher.catch_event(event)
+
+ private fun click_from_native do click(new ClickEvent(self))
+end
+
+# An Android editable text field
+class EditText
+ super TextView
+
+ redef type NATIVE: NativeEditText
+
+ init
+ do
+ var native = new NativeEditText(app.activities.first.native)
+ self.native = native.new_global_ref
+ end
+end
+
+redef class NativeButton
+ new (context: NativeActivity, sender_object: Object)
+ import Button.click_from_native in "Java" `{
+ final int final_sender_object = sender_object;
+
+ return new android.widget.Button(context){
+ @Override
+ public boolean onTouchEvent(android.view.MotionEvent event) {
+ if(event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
+ Button_click_from_native(final_sender_object);
+ return true;
+ }
+ return false;
+ }
+ };
+ `}
+end
android_manifest("""<uses-permission android:name="android.permission.VIBRATE" />""")
end
-import native_app_glue
+import dalvik
# Handle to an Android vibrator
extern class Vibrator in "Java" `{ android.os.Vibrator `}
# Bucket type used in this implementation.
type BUCKET: HashSet[Bucketable[G]]
- private var buckets: Array[BUCKET] is noinit
-
private var next_bucket: nullable BUCKET = null
private var current_bucket_key: Int = -1
- init
- do
- var n_buckets = 100
- buckets = new Array[BUCKET].with_capacity(n_buckets)
+ # Number of `buckets`, default at 100
+ #
+ # Must be set prior to using any other methods of this class.
+ var n_buckets = 100
- for b in [0 .. n_buckets [do
- buckets[b] = new HashSet[Bucketable[G]]
- end
- end
+ private var buckets: Array[BUCKET] =
+ [for b in n_buckets.times do new HashSet[Bucketable[G]]] is lazy
# Add the Bucketable event `e` at `at_tick`.
fun add_at(e: Bucketable[G], at_tick: Int)
redef fun +(offset) `{ return recv + offset; `}
end
+# Wrapper around an array of `NativeString` in C (`char**`) with length and destroy state.
+class CNativeStringArray
+ super CArray[NativeString]
+
+ redef type NATIVE: NativeCStringArray
+
+ # Initialize a new NativeCStringArray of `size` elements.
+ init(size: Int) is old_style_init do
+ native_array = new NativeCStringArray(size)
+ super size
+ end
+
+ # Build from an `Array[NativeString]`
+ new from(array: Array[NativeString])
+ do
+ var carray = new CNativeStringArray(array.length)
+ for i in array.length.times do
+ carray[i] = array[i]
+ end
+ return carray
+ end
+end
+
+# An array of `NativeString` in C (`char**`)
+extern class NativeCStringArray `{ char** `}
+ super NativeCArray
+
+ redef type E: NativeString
+
+ # Initialize a new NativeCStringArray of `size` elements.
+ new(size: Int) `{ return calloc(size, sizeof(char*)); `}
+
+ redef fun [](index) `{ return recv[index]; `}
+ redef fun []=(index, val) `{ recv[index] = val; `}
+ redef fun +(offset) `{ return recv + offset; `}
+end
+
redef class NativeString
super NativeCArray
redef type E: Char
for e in es do inc(e)
end
+ # Decrement the value of `e` by 1
+ fun dec(e: E) do
+ if not has_key(e) then
+ self.map[e] = 0
+ else
+ self.map[e] = self[e] - 1
+ sum += - 1
+ end
+ end
+
+ # Decrement the value for each element of `es`
+ fun dec_all(es: Collection[E])
+ do
+ for e in es do dec(e)
+ end
+
# A new Counter initialized with `inc_all`.
init from(es: Collection[E])
do
--- /dev/null
+# 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.
+
+# Internationalization of Strings using `gettext` library
+module gettext is
+ new_annotation i18n
+end
+
+in "C" `{
+ #include <libintl.h>
+ #include <locale.h>
+`}
+
+redef class Sys
+ redef fun run do
+ "".to_cstring.set_locale
+ super
+ end
+end
+
+redef class NativeString
+ # Sets the locale of the program running
+ #
+ # This can be set at different times in the program,
+ # if used with an empty string, the locale will
+ # be set to the user's environment locale.
+ #
+ # For more info, SEE setlocale manual
+ fun set_locale `{
+ setlocale(LC_ALL, recv);
+ `}
+end
+
+redef class String
+ # Gets the translation of `self` via gettext from `dir` using `domain`
+ #
+ # `domain`: Gettext domain, i.e. file/module name
+ # `dir`: Where the locale/LC_MESSAGES folder for this domain is located
+ fun get_translation(domain, dir: String): String do
+ bindtextdomain(domain, dir)
+ return dgettext(domain)
+ end
+
+ # Gettext `gettext`, SEE gettext manual for further info
+ fun gettext: String
+ import String.to_cstring, NativeString.to_s `{
+ return NativeString_to_s(gettext(String_to_cstring(recv)));
+ `}
+
+ # Gettext `dgettext`, SEE gettext manual for further info
+ fun dgettext(domain: String): String
+ import String.to_cstring, NativeString.to_s `{
+ return NativeString_to_s(dgettext(String_to_cstring(domain), String_to_cstring(recv)));
+ `}
+end
+
+# Gettext `bindtextdomain`, SEE gettext manual for further info
+fun bindtextdomain(domain, dir: String) import String.to_cstring `{
+ bindtextdomain(String_to_cstring(domain), String_to_cstring(dir));
+`}
+
+# Gettext `textdomain`, SEE gettext manual for further info
+fun textdomain(domain: String) import String.to_cstring `{
+ textdomain(String_to_cstring(domain));
+`}
# Comment body text.
fun body: String do return json["body"].to_s
+
+ # Does the comment contain an acknowledgement (+1)
+ fun is_ack: Bool
+ do
+ return body.has("\\+1\\b".to_re) or body.has(":+1:") or body.has(":shipit:")
+ end
end
# A comment made on a commit.
# See the License for the specific language governing permissions and
# limitations under the License.
-module gdk_enums is pkgconfig("gtk+-3.0")
+module gdk_enums is pkgconfig "gtk+-3.0"
in "C Header" `{
#include <gtk/gtk.h>
`}
-#enum GdkGravity
-#Defines the reference point of a window and the meaning of coordinates passed to gtk_window_move().
-#@https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkGravity
+# enum GdkGravity
+# Defines the reference point of a window and the meaning of coordinates passed to gtk_window_move().
+# See: https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkGravity
extern class GdkGravity `{GdkGravity`}
- #The reference point is at the top left corner.
- new north_west `{ return GDK_GRAVITY_NORTH_WEST; `}
+ # The reference point is at the top left corner.
+ new north_west `{ return GDK_GRAVITY_NORTH_WEST; `}
- #The reference point is in the middle of the top edge.
- new north `{ return GDK_GRAVITY_NORTH; `}
+ # The reference point is in the middle of the top edge.
+ new north `{ return GDK_GRAVITY_NORTH; `}
- #The reference point is at the top right corner.
- new north_east `{ return GDK_GRAVITY_NORTH_EAST; `}
+ # The reference point is at the top right corner.
+ new north_east `{ return GDK_GRAVITY_NORTH_EAST; `}
- #The reference point is at the middle of the left edge.
- new west `{ return GDK_GRAVITY_WEST; `}
+ # The reference point is at the middle of the left edge.
+ new west `{ return GDK_GRAVITY_WEST; `}
- #The reference point is at the center of the window
- new center `{ return GDK_GRAVITY_CENTER; `}
+ # The reference point is at the center of the window
+ new center `{ return GDK_GRAVITY_CENTER; `}
- #The reference point is at the middle of the right edge.
- new east `{ return GDK_GRAVITY_EAST; `}
+ # The reference point is at the middle of the right edge.
+ new east `{ return GDK_GRAVITY_EAST; `}
- #The reference point is at the lower left corner.
- new south_west `{ return GDK_GRAVITY_SOUTH_WEST; `}
+ # The reference point is at the lower left corner.
+ new south_west `{ return GDK_GRAVITY_SOUTH_WEST; `}
- #The reference point is at the middle of the lower edge.
- new south `{ return GDK_GRAVITY_SOUTH; `}
+ # The reference point is at the middle of the lower edge.
+ new south `{ return GDK_GRAVITY_SOUTH; `}
- #The reference point is at the lower right corner.
- new south_east `{ return GDK_GRAVITY_SOUTH_EAST; `}
+ # The reference point is at the lower right corner.
+ new south_east `{ return GDK_GRAVITY_SOUTH_EAST; `}
- #The reference point is at the top left corner of the window itself, ignoring window manager decorations.
- new static `{ return GDK_GRAVITY_STATIC; `}
+ # The reference point is at the top left corner of the window itself, ignoring window manager decorations.
+ new static `{ return GDK_GRAVITY_STATIC; `}
end
-#enum GdkGWindowEdge
-#Determines a window edge or corner.
-#@https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowEdge
+# enum GdkGWindowEdge
+# Determines a window edge or corner.
+# See: https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowEdge
extern class GdkWindowEdge `{GdkWindowEdge`}
- #The top left corner.
- new north_west `{ return GDK_WINDOW_EDGE_NORTH_WEST; `}
+ # The top left corner.
+ new north_west `{ return GDK_WINDOW_EDGE_NORTH_WEST; `}
- #The top edge.
- new north `{ return GDK_WINDOW_EDGE_NORTH; `}
+ # The top edge.
+ new north `{ return GDK_WINDOW_EDGE_NORTH; `}
- #The top right corner.
- new north_east `{ return GDK_WINDOW_EDGE_NORTH_EAST; `}
+ # The top right corner.
+ new north_east `{ return GDK_WINDOW_EDGE_NORTH_EAST; `}
- #The left edge.
- new west `{ return GDK_WINDOW_EDGE_WEST; `}
+ # The left edge.
+ new west `{ return GDK_WINDOW_EDGE_WEST; `}
- #The right edge.
- new east `{ return GDK_WINDOW_EDGE_EAST; `}
+ # The right edge.
+ new east `{ return GDK_WINDOW_EDGE_EAST; `}
- #The lower left corner.
- new south_west `{ return GDK_WINDOW_EDGE_SOUTH_WEST; `}
+ # The lower left corner.
+ new south_west `{ return GDK_WINDOW_EDGE_SOUTH_WEST; `}
- #The lower edge.
- new south `{ return GDK_WINDOW_EDGE_SOUTH; `}
+ # The lower edge.
+ new south `{ return GDK_WINDOW_EDGE_SOUTH; `}
- #The lower right corner.
- new south_east `{ return GDK_WINDOW_EDGE_SOUTH_EAST; `}
+ # The lower right corner.
+ new south_east `{ return GDK_WINDOW_EDGE_SOUTH_EAST; `}
end
# See the License for the specific language governing permissions and
# limitations under the License.
-module gtk_assistant is pkgconfig("gtk+-3.0")
+module gtk_assistant is pkgconfig "gtk+-3.0"
import gtk_core
#include <gtk/gtk.h>
`}
-#A widget used to guide users through multi-step operations
-#@https://developer.gnome.org/gtk3/stable/GtkAssistant.html
+# A widget used to guide users through multi-step operations
+# See: https://developer.gnome.org/gtk3/stable/GtkAssistant.html
extern class GtkAssistant `{GtkAssistant *`}
super GtkWindow
- new is extern `{
- return (GtkAssistant *)gtk_assistant_new( );
+ new `{
+ return (GtkAssistant *)gtk_assistant_new();
`}
- fun current_page : Int is extern `{
- return gtk_assistant_get_current_page ( recv );
+ fun current_page: Int `{
+ return gtk_assistant_get_current_page (recv);
`}
- fun current_page=( page_num : Int ) is extern `{
- gtk_assistant_set_current_page( recv, page_num);
+ fun current_page=(page_num: Int) `{
+ gtk_assistant_set_current_page(recv, page_num);
`}
- fun number_pages : Int is extern `{
- return gtk_assistant_get_n_pages( recv );
+ fun number_pages: Int `{
+ return gtk_assistant_get_n_pages(recv);
`}
- fun get_page( page_num : Int ) : GtkWidget is extern `{
- return gtk_assistant_get_nth_page( recv, page_num );
+ fun get_page(page_num: Int): GtkWidget `{
+ return gtk_assistant_get_nth_page(recv, page_num);
`}
- fun prepend( page : GtkWidget ) : Int is extern `{
- return gtk_assistant_prepend_page( recv, page );
+ fun prepend(page: GtkWidget): Int `{
+ return gtk_assistant_prepend_page(recv, page);
`}
- fun append( page : GtkWidget ) : Int is extern `{
- return gtk_assistant_append_page( recv, page );
+ fun append(page: GtkWidget): Int `{
+ return gtk_assistant_append_page(recv, page);
`}
- fun insert( page : GtkWidget, position : Int ) : Int is extern `{
- return gtk_assistant_insert_page( recv, page, position );
+ fun insert(page: GtkWidget, position: Int): Int `{
+ return gtk_assistant_insert_page(recv, page, position);
`}
- fun remove( page_num : Int ) is extern `{
- gtk_assistant_remove_page( recv, page_num );
+ fun remove(page_num: Int) `{
+ gtk_assistant_remove_page(recv, page_num);
`}
- fun get_page_type( page : GtkWidget ) : GtkAssistantPageType is extern `{
- return gtk_assistant_get_page_type( recv, page );
+ fun get_page_type(page: GtkWidget): GtkAssistantPageType `{
+ return gtk_assistant_get_page_type(recv, page);
`}
- fun set_page_type( page : GtkWidget, t : GtkAssistantPageType) is extern `{
- gtk_assistant_set_page_type( recv, page, t );
+ fun set_page_type(page: GtkWidget, t: GtkAssistantPageType) `{
+ gtk_assistant_set_page_type(recv, page, t);
`}
- fun get_page_title( page : GtkWidget ) : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_assistant_get_page_title( recv, page ) );
+ fun get_page_title(page: GtkWidget): String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_assistant_get_page_title(recv, page));
`}
- fun set_page_title( page : GtkWidget, title : String) is extern import String.to_cstring `{
- gtk_assistant_set_page_title( recv, page, String_to_cstring( title ) );
+ fun set_page_title(page: GtkWidget, title: String) import String.to_cstring `{
+ gtk_assistant_set_page_title(recv, page, String_to_cstring(title));
`}
- fun set_page_complete( page : GtkWidget, is_complete : Bool ) is extern `{
- gtk_assistant_set_page_complete( recv, page, is_complete );
+ fun set_page_complete(page: GtkWidget, is_complete: Bool) `{
+ gtk_assistant_set_page_complete(recv, page, is_complete);
`}
- fun get_page_complete( page : GtkWidget ) : Bool is extern `{
- return gtk_assistant_get_page_complete( recv, page );
+ fun get_page_complete(page: GtkWidget): Bool `{
+ return gtk_assistant_get_page_complete(recv, page);
`}
- fun remove_action_widget( child : GtkWidget ) is extern `{
- gtk_assistant_remove_action_widget( recv, child );
+ fun remove_action_widget(child: GtkWidget) `{
+ gtk_assistant_remove_action_widget(recv, child);
`}
- fun add_action_widget( child : GtkWidget ) is extern `{
- gtk_assistant_add_action_widget( recv, child );
+ fun add_action_widget(child: GtkWidget) `{
+ gtk_assistant_add_action_widget(recv, child);
`}
- fun update_buttons_state is extern `{
- gtk_assistant_update_buttons_state( recv );
+ fun update_buttons_state `{
+ gtk_assistant_update_buttons_state(recv);
`}
- fun commit is extern `{
- gtk_assistant_commit( recv );
+ fun commit `{
+ gtk_assistant_commit(recv);
`}
- fun next_page is extern `{
- gtk_assistant_next_page( recv );
+ fun next_page `{
+ gtk_assistant_next_page(recv);
`}
- fun previous_page is extern `{
- gtk_assistant_previous_page( recv );
+ fun previous_page `{
+ gtk_assistant_previous_page(recv);
`}
end
-#enum GtkAssistantPageType
-#An enum for determining the page role inside the GtkAssistant. It's used to handle buttons sensitivity and visibility.
-#@https://developer.gnome.org/gtk3/stable/GtkAssistant.html#GtkAssistantPageType
+# enum GtkAssistantPageType
+# An enum for determining the page role inside the GtkAssistant. It's used to handle buttons sensitivity and visibility.
+# See: https://developer.gnome.org/gtk3/stable/GtkAssistant.html#GtkAssistantPageType
extern class GtkAssistantPageType `{GtkAssistantPageType`}
- #The page has regular contents. Both the Back and forward buttons will be shown.
+ # The page has regular contents. Both the Back and forward buttons will be shown.
new content `{ return GTK_ASSISTANT_PAGE_CONTENT; `}
- #The page contains an introduction to the assistant task. Only the Forward button will be shown if there is a next page.
+ # The page contains an introduction to the assistant task. Only the Forward button will be shown if there is a next page.
new intro `{ return GTK_ASSISTANT_PAGE_INTRO; `}
- #The page lets the user confirm or deny the changes. The Back and Apply buttons will be shown.
+ # The page lets the user confirm or deny the changes. The Back and Apply buttons will be shown.
new confirm `{ return GTK_ASSISTANT_PAGE_CONFIRM; `}
- #The page informs the user of the changes done. Only the Close button will be shown.
+ # The page informs the user of the changes done. Only the Close button will be shown.
new summary `{ return GTK_ASSISTANT_PAGE_SUMMARY; `}
- #Used for tasks that take a long time to complete, blocks the assistant until the page is marked as complete. Only the back button will be shown.
+ # Used for tasks that take a long time to complete, blocks the assistant until the page is marked as complete. Only the back button will be shown.
new progress `{ return GTK_ASSISTANT_PAGE_PROGRESS; `}
- #Used for when other page types are not appropriate. No buttons will be shown, and the application must add its own buttons through gtk_assistant_add_action_widget().
+ # Used for when other page types are not appropriate. No buttons will be shown, and the application must add its own buttons through gtk_assistant_add_action_widget().
new custom `{ return GTK_ASSISTANT_PAGE_CUSTOM; `}
end
# limitations under the License.
# Classes and services to use libGTK widgets
-module gtk_core is pkgconfig("gtk+-3.0")
+module gtk_core is
+ pkgconfig "gtk+-3.0"
+ cflags "-Wno-deprecated-declarations"
+end
import gtk_enums
import gdk_enums
`}
`{
- /* callback user data */
- typedef struct {
- GtkCallable to_call;
- nullable_Object user_data;
- } NitGtkSignal;
-
- void nit_gtk_callback_func( GtkWidget *widget,
- gpointer callback_data ) {
- NitGtkSignal *data;
- data = (NitGtkSignal*)callback_data;
- GtkCallable_signal( data->to_call, widget, data->user_data );
- }
+ /* callback user data */
+ typedef struct {
+ GtkCallable to_call;
+ nullable_Object user_data;
+ } NitGtkSignal;
+
+ void nit_gtk_callback_func(GtkWidget *widget, gpointer callback_data) {
+ NitGtkSignal *data;
+ data = (NitGtkSignal*)callback_data;
+ GtkCallable_signal(data->to_call, widget, data->user_data);
+ }
`}
-redef interface Object
- protected fun init_gtk `{ gtk_init( 0, NULL ); `}
- protected fun run_gtk `{ gtk_main(); `}
- protected fun quit_gtk `{ gtk_main_quit(); `}
-end
+# Initialize the GTK system
+fun init_gtk `{ gtk_init(0, NULL); `}
+
+# Hand over control to the GTK event loop
+fun run_gtk `{ gtk_main(); `}
+
+# Quit the GTK event loop and clean up the system
+fun quit_gtk `{ gtk_main_quit(); `}
interface GtkCallable
# return true to stop event processing, false to let it propagate
- fun signal( sender : GtkWidget, user_data : nullable Object ) is abstract
+ fun signal(sender: GtkWidget, user_data: nullable Object) is abstract
end
extern class GdkEvent `{GdkEvent *`}
end
-
-#Base class for all widgets
-#@https://developer.gnome.org/gtk3/stable/GtkWidget.html
+# Base class for all widgets
+# See: https://developer.gnome.org/gtk3/stable/GtkWidget.html
extern class GtkWidget `{GtkWidget *`}
- fun show_all is extern `{ gtk_widget_show_all( recv ); `}
+ fun show_all `{ gtk_widget_show_all(recv); `}
- fun signal_connect( signal_name : String, to_call : GtkCallable, user_data : nullable Object ) is extern import String.to_cstring, GtkCallable.signal, Object.as not nullable `{
- NitGtkSignal *data = malloc( sizeof(NitGtkSignal) );
+ fun signal_connect(signal_name: String, to_call: GtkCallable, user_data: nullable Object) import String.to_cstring, GtkCallable.signal, Object.as not nullable `{
+ NitGtkSignal *data = malloc(sizeof(NitGtkSignal));
- GtkCallable_incr_ref( to_call );
- Object_incr_ref( user_data );
+ GtkCallable_incr_ref(to_call);
+ Object_incr_ref(user_data);
data->to_call = to_call;
data->user_data = user_data;
/*Use G_CALLBACK() to cast the callback function to a GCallback*/
- g_signal_connect( recv,
- String_to_cstring( signal_name ),
- G_CALLBACK(nit_gtk_callback_func),
- data );
+ g_signal_connect(recv,
+ String_to_cstring(signal_name),
+ G_CALLBACK(nit_gtk_callback_func),
+ data);
`}
- redef fun == ( o ) do return o isa GtkWidget and equal_to_gtk_widget( o )
+ redef fun ==(o) do return o isa GtkWidget and equal_to_gtk_widget(o)
- private fun equal_to_gtk_widget( o : GtkWidget ) : Bool `{
+ private fun equal_to_gtk_widget(o: GtkWidget): Bool `{
return recv == o;
`}
- fun request_size( width, height : Int ) `{
- gtk_widget_set_size_request( recv, width, height );
+ fun request_size(width, height: Int) `{
+ gtk_widget_set_size_request(recv, width, height);
`}
- fun bg_color=( state : GtkStateType, color : GdkRGBA ) is extern `{
- gtk_widget_override_background_color( recv, state, color);
+ fun bg_color=(state: GtkStateType, color: GdkRGBA) `{
+ gtk_widget_override_background_color(recv, state, color);
`}
- #with gtk it's possible to set fg_color to all widget : is it correct? is fg color inherited?
- #GdkColor color;
- fun fg_color=( state : GtkStateType, color : GdkRGBA ) is extern `{
- gtk_widget_override_color( recv, state, color);
+ # with gtk it's possible to set fg_color to all widget: is it correct? is fg color inherited?
+ # GdkColor color;
+ fun fg_color=(state: GtkStateType, color: GdkRGBA) `{
+ gtk_widget_override_color(recv, state, color);
`}
-
+
# Sets the sensitivity of a widget. sensitive -> the user can interact with it.
# Insensitive -> widget "grayed out" and the user can"t interact with them
- fun sensitive=(sensitive : Bool) is extern `{
+ fun sensitive=(sensitive: Bool) `{
gtk_widget_set_sensitive(recv, sensitive);
`}
-
+
# return the sensitivity of the widget
- fun sensitive: Bool is extern `{
+ fun sensitive: Bool `{
return gtk_widget_get_sensitive(recv);
`}
-
+
# Set the visibility of the widget
- fun visible=(visible: Bool) is extern `{
+ fun visible=(visible: Bool) `{
gtk_widget_set_visible(recv, visible);
`}
# Get the visibility of the widget only
- fun visible_self: Bool is extern `{
+ fun visible_self: Bool `{
return gtk_widget_get_visible(recv);
`}
fun hide `{ gtk_widget_hide(recv); `}
end
-#Base class for widgets which contain other widgets
-#@https://developer.gnome.org/gtk3/stable/GtkContainer.html
+# Base class for widgets which contain other widgets
+# See: https://developer.gnome.org/gtk3/stable/GtkContainer.html
extern class GtkContainer `{GtkContainer *`}
super GtkWidget
# Add a widget to the container
- fun add( widget : GtkWidget ) is extern `{
- gtk_container_add( recv, widget );
+ fun add(widget: GtkWidget) `{
+ gtk_container_add(recv, widget);
`}
# Remove the widget from the container
- fun remove_widget( widget : GtkWidget ) is extern `{
- gtk_container_remove( recv, widget );
+ fun remove_widget(widget: GtkWidget) `{
+ gtk_container_remove(recv, widget);
`}
# Get the resize mode of the container
- fun resize_mode : GtkResizeMode is extern `{
- return gtk_container_get_resize_mode( recv );
+ fun resize_mode: GtkResizeMode `{
+ return gtk_container_get_resize_mode(recv);
`}
# Set the resize mode of the container
- fun resize_mode=( resize_mode: GtkResizeMode ) is extern `{
- gtk_container_set_resize_mode( recv, resize_mode );
+ fun resize_mode=(resize_mode: GtkResizeMode) `{
+ gtk_container_set_resize_mode(recv, resize_mode);
`}
end
-#A container with just one child
-#@https://developer.gnome.org/gtk3/stable/GtkBin.html
+# A container with just one child
+# See: https://developer.gnome.org/gtk3/stable/GtkBin.html
extern class GtkBin `{GtkBin *`}
super GtkContainer
- fun child : GtkWidget is extern `{
- return gtk_bin_get_child( recv );
+ fun child: GtkWidget `{
+ return gtk_bin_get_child(recv);
`}
end
-#Toplevel which can contain other widgets
-#@https://developer.gnome.org/gtk3/stable/GtkWindow.html
+# Toplevel which can contain other widgets
+# See: https://developer.gnome.org/gtk3/stable/GtkWindow.html
extern class GtkWindow `{GtkWindow *`}
super GtkBin
- new ( flag : Int ) is extern `{
- GtkWindow *win;
+ new (typ: GtkWindowType) `{
+ return (GtkWindow *)gtk_window_new(typ);
+ `}
- win = GTK_WINDOW(gtk_window_new( flag ));
- g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
- return win;
+ # Connect the "destroy" signal to `quit_gtk`
+ fun connect_destroy_signal_to_quit `{
+ g_signal_connect(recv, "destroy", G_CALLBACK(gtk_main_quit), NULL);
`}
- fun title=( title : String ) is extern import String.to_cstring `{
- gtk_window_set_title( recv, String_to_cstring( title ) );
+ fun title=(title: String) import String.to_cstring `{
+ gtk_window_set_title(recv, String_to_cstring(title));
`}
- #The "destroy" signal is emitted when a widget is destroyed, either by explicitly calling gtk_widget_destroy() or when the widget is unparented. Top-level GtkWindows are also destroyed when the Close window control button is clicked.
- fun on_close( to_call : GtkCallable, user_data : nullable Object )
+ # The "destroy" signal is emitted when a widget is destroyed, either by explicitly calling gtk_widget_destroy() or when the widget is unparented. Top-level GtkWindows are also destroyed when the Close window control button is clicked.
+ fun on_close(to_call: GtkCallable, user_data: nullable Object)
do
- signal_connect( "destroy", to_call, user_data )
+ signal_connect("destroy", to_call, user_data)
end
- fun resizable : Bool is extern `{
- return gtk_window_get_resizable( recv );
+ fun resizable: Bool `{
+ return gtk_window_get_resizable(recv);
`}
- fun resizable=( is_resizable : Bool) is extern `{
- return gtk_window_set_resizable( recv, is_resizable );
+ fun resizable=(is_resizable: Bool) `{
+ return gtk_window_set_resizable(recv, is_resizable);
`}
- #Activates the current focused widget within the window.
- #returns TRUE if a widget got activated.
- fun activate_focus : Bool is extern `{
- return gtk_window_activate_focus( recv );
+ # Activates the current focused widget within the window.
+ # returns TRUE if a widget got activated.
+ fun activate_focus: Bool `{
+ return gtk_window_activate_focus(recv);
`}
- #Sets a window modal or non-modal. Modal windows prevent interaction with other windows in the same application.
- fun modal=( is_modal : Bool ) is extern `{
- gtk_window_set_modal( recv, is_modal );
+ # Sets a window modal or non-modal. Modal windows prevent interaction with other windows in the same application.
+ fun modal=(is_modal: Bool) `{
+ gtk_window_set_modal(recv, is_modal);
`}
- #Windows can't actually be 0x0 in size, they must be at least 1x1
- #but passing 0 for width and height is OK, resulting in a 1x1 default size.
- #params width in pixels, or -1 to unset the default width
- #params height in pixels, or -1 to unset the default height
- fun default_size( width : Int, height : Int ) is extern `{
- gtk_window_set_default_size( recv, width, height );
+ # Windows can't actually be 0x0 in size, they must be at least 1x1
+ # but passing 0 for width and height is OK, resulting in a 1x1 default size.
+ # params width in pixels, or -1 to unset the default width
+ # params height in pixels, or -1 to unset the default height
+ fun default_size(width: Int, height: Int) `{
+ gtk_window_set_default_size(recv, width, height);
`}
- #Activates the default widget for the window
- #unless the current focused widget has been configured to receive the default action (see gtk_widget_set_receives_default()), in which case the focused widget is activated.
- fun activate_default : Bool is extern `{
- return gtk_window_activate_default( recv );
+ # Activates the default widget for the window
+ # unless the current focused widget has been configured to receive the default action (see gtk_widget_set_receives_default()), in which case the focused widget is activated.
+ fun activate_default: Bool `{
+ return gtk_window_activate_default(recv);
`}
- fun gravity : GdkGravity is extern `{
- return gtk_window_get_gravity( recv );
+ fun gravity: GdkGravity `{
+ return gtk_window_get_gravity(recv);
`}
- fun gravity=( window_grav : GdkGravity ) is extern `{
- gtk_window_set_gravity( recv, window_grav );
+ fun gravity=(window_grav: GdkGravity) `{
+ gtk_window_set_gravity(recv, window_grav);
`}
-# fun position : GtkWindowPosition is extern `{
-# return gtk_window_get_position( recv );
+# fun position: GtkWindowPosition `{
+# return gtk_window_get_position(recv);
# `}
#
-# fun position=( window_pos : GtkWindowPosition ) is extern `{
-# gtk_window_set_position( recv, window_pos );
+# fun position=(window_pos: GtkWindowPosition) `{
+# gtk_window_set_position(recv, window_pos);
# `}
- fun active : Bool is extern `{
- return gtk_window_is_active( recv );
+ fun active: Bool `{
+ return gtk_window_is_active(recv);
`}
- #Returns whether the input focus is within this GtkWindow. For real toplevel windows, this is identical to gtk_window_is_active(), but for embedded windows, like GtkPlug, the results will differ.
- fun has_toplevel_focus : Bool is extern `{
- return gtk_window_has_toplevel_focus( recv );
+ # Returns whether the input focus is within this GtkWindow. For real toplevel windows, this is identical to gtk_window_is_active(), but for embedded windows, like GtkPlug, the results will differ.
+ fun has_toplevel_focus: Bool `{
+ return gtk_window_has_toplevel_focus(recv);
`}
- fun get_focus : GtkWidget is extern `{
- return gtk_window_get_focus( recv );
+ fun get_focus: GtkWidget `{
+ return gtk_window_get_focus(recv);
`}
- fun set_focus( widget : GtkWidget ) is extern `{
- return gtk_window_set_focus( recv, widget );
+ fun set_focus(widget: GtkWidget) `{
+ return gtk_window_set_focus(recv, widget);
`}
- fun get_default_widget : GtkWidget is extern `{
- return gtk_window_get_default_widget( recv );
+ fun get_default_widget: GtkWidget `{
+ return gtk_window_get_default_widget(recv);
`}
- fun set_default_widget( widget : GtkWidget ) is extern `{
- return gtk_window_set_default( recv, widget );
+ fun set_default_widget(widget: GtkWidget) `{
+ return gtk_window_set_default(recv, widget);
`}
- fun maximize is extern `{
- return gtk_window_maximize( recv );
+ fun maximize `{
+ return gtk_window_maximize(recv);
`}
- fun unmaximize is extern `{
- return gtk_window_unmaximize( recv );
+ fun unmaximize `{
+ return gtk_window_unmaximize(recv);
`}
- fun fullscreen is extern `{
- return gtk_window_fullscreen( recv );
+ fun fullscreen `{
+ return gtk_window_fullscreen(recv);
`}
- fun unfullscreen is extern `{
- return gtk_window_unfullscreen( recv );
+ fun unfullscreen `{
+ return gtk_window_unfullscreen(recv);
`}
- fun keep_above=( setting : Bool ) is extern `{
- gtk_window_set_keep_above( recv, setting );
+ fun keep_above=(setting: Bool) `{
+ gtk_window_set_keep_above(recv, setting);
`}
- fun keep_below=( setting : Bool ) is extern `{
- gtk_window_set_keep_below( recv, setting );
+ fun keep_below=(setting: Bool) `{
+ gtk_window_set_keep_below(recv, setting);
`}
end
-#A bin with a decorative frame and optional label
-#https://developer.gnome.org/gtk3/stable/GtkFrame.html
+# A bin with a decorative frame and optional label
+# https://developer.gnome.org/gtk3/stable/GtkFrame.html
extern class GtkFrame `{GtkFrame *`}
super GtkBin
- new ( lbl : String ) is extern import String.to_cstring`{
- return (GtkFrame *)gtk_frame_new( String_to_cstring( lbl ) );
+ new (lbl: String) import String.to_cstring `{
+ return (GtkFrame *)gtk_frame_new(String_to_cstring(lbl));
`}
- fun frame_label : String is extern`{
- return NativeString_to_s( (char *)gtk_frame_get_label( recv ) );
+ fun frame_label: String `{
+ return NativeString_to_s((char *)gtk_frame_get_label(recv));
`}
- fun frame_label=( lbl : String ) is extern import String.to_cstring`{
- gtk_frame_set_label( recv, String_to_cstring( lbl ) );
+ fun frame_label=(lbl: String) import String.to_cstring `{
+ gtk_frame_set_label(recv, String_to_cstring(lbl));
`}
- fun label_widget : GtkWidget is extern `{
- return gtk_frame_get_label_widget( recv );
+ fun label_widget: GtkWidget `{
+ return gtk_frame_get_label_widget(recv);
`}
- fun label_widget=( widget : GtkWidget ) is extern `{
- gtk_frame_set_label_widget( recv, widget );
+ fun label_widget=(widget: GtkWidget) `{
+ gtk_frame_set_label_widget(recv, widget);
`}
- fun shadow_type : GtkShadowType is extern `{
- return gtk_frame_get_shadow_type( recv );
+ fun shadow_type: GtkShadowType `{
+ return gtk_frame_get_shadow_type(recv);
`}
- fun shadow_type=( stype : GtkShadowType ) is extern `{
- gtk_frame_set_shadow_type( recv, stype );
+ fun shadow_type=(stype: GtkShadowType) `{
+ gtk_frame_set_shadow_type(recv, stype);
`}
- #fun label_align : GtkShadowType is extern `{
- #`}
-
- fun label_align=( xalign : Float, yalign : Float ) is extern `{
- gtk_frame_set_label_align( recv, xalign, yalign );
+ fun label_align=(xalign: Float, yalign: Float) `{
+ gtk_frame_set_label_align(recv, xalign, yalign);
`}
end
-#Pack widgets in a rows and columns
-#@https://developer.gnome.org/gtk3/3.3/GtkGrid.html
+# Pack widgets in a rows and columns
+# See: https://developer.gnome.org/gtk3/3.3/GtkGrid.html
extern class GtkGrid `{GtkGrid *`}
super GtkContainer
- # Create a grid with a fixed number of rows and columns
- new ( rows : Int, columns : Int, homogeneous : Bool ) `{
- return (GtkGrid*)gtk_grid_new(); // rows, columns, homogeneous );
+ # Create a new grid
+ new `{
+ return (GtkGrid*)gtk_grid_new();
`}
# Set a widget child inside the grid at a given position
- fun attach( child : GtkWidget, left, top, width, height : Int ) `{
- gtk_grid_attach( recv, child, left, top, width, height );
+ fun attach(child: GtkWidget, left, top, width, height: Int) `{
+ gtk_grid_attach(recv, child, left, top, width, height);
`}
# Get the child of the Grid at the given position
- fun get_child_at( left : Int, top : Int ): GtkWidget is extern `{
- return gtk_grid_get_child_at( recv, left, top );
+ fun get_child_at(left: Int, top: Int): GtkWidget `{
+ return gtk_grid_get_child_at(recv, left, top);
`}
# Insert a row at the specified position
- fun insert_row( position :Int ) is extern `{
- gtk_grid_insert_row( recv, position );
+ fun insert_row(position:Int) `{
+ gtk_grid_insert_row(recv, position);
`}
# Insert a column at the specified position
- fun insert_column( position : Int ) is extern `{
- gtk_grid_insert_column( recv, position );
+ fun insert_column(position: Int) `{
+ gtk_grid_insert_column(recv, position);
+ `}
+end
+
+# A widget that can switch orientation
+extern class GtkOrientable `{GtkOrientable *`}
+ super GtkWidget
+
+ # Get the orientation of this widget
+ fun orientation: GtkOrientation `{
+ return gtk_orientable_get_orientation(recv);
+ `}
+
+ # Set the orientation of this widget
+ fun orientation=(orientation: GtkOrientation) `{
+ gtk_orientable_set_orientation(recv, orientation);
`}
end
# A container box
#
-# @https://developer.gnome.org/gtk3/3.4/GtkBox.html
+# See: https://developer.gnome.org/gtk3/3.4/GtkBox.html
extern class GtkBox `{ GtkBox * `}
super GtkContainer
+ super GtkOrientable
+
+ # Create a new `GtkBox` with the given `orientation` and `spacing` between its children
+ new (orientation: GtkOrientation, spacing: Int) `{
+ return (GtkBox *)gtk_box_new(orientation, spacing);
+ `}
+
+ # Give the children of `self` equal space in the box?
+ fun omogeneous: Bool `{ return gtk_box_get_homogeneous(recv); `}
+
+ # Give the children of `self` equal space in the box?
+ fun omogeneous=(omogeneous: Bool) `{
+ gtk_box_set_homogeneous(recv, omogeneous);
+ `}
+
+ # Add `child` and pack it at the start of the box
+ fun pack_start(child: GtkWidget, expand, fill: Bool, padding: Int) `{
+ gtk_box_pack_start(recv, child, expand, fill, padding);
+ `}
+
+ # Add `child` and pack it at the end of the box
+ fun pack_end(child: GtkWidget, expand, fill: Bool, padding: Int) `{
+ gtk_box_pack_end(recv, child, expand, fill, padding);
+ `}
+
+ # Set the way `child` is packed in `self`
+ fun set_child_packing(child: GtkWidget, expand, fill: Bool, padding: Int, packing: GtkPackType) `{
+ gtk_box_set_child_packing(recv, child, expand, fill, padding, packing);
+ `}
end
-#The tree interface used by GtkTreeView
-#@https://developer.gnome.org/gtk3/stable/GtkTreeModel.html
+# The tree interface used by GtkTreeView
+# See: https://developer.gnome.org/gtk3/stable/GtkTreeModel.html
extern class GtkTreeModel `{GtkTreeModel *`}
end
-#An abstract class for laying out GtkCellRenderers
-#@https://developer.gnome.org/gtk3/stable/GtkCellArea.html
+# An abstract class for laying out GtkCellRenderers
+# See: https://developer.gnome.org/gtk3/stable/GtkCellArea.html
extern class GtkCellArea `{GtkCellArea *`}
end
-#Base class for widgets with alignments and padding
-#@https://developer.gnome.org/gtk3/3.2/GtkMisc.html
+# Base class for widgets with alignments and padding
+# See: https://developer.gnome.org/gtk3/3.2/GtkMisc.html
extern class GtkMisc `{GtkMisc *`}
super GtkWidget
- fun alignment : GtkAlignment is abstract
+ fun alignment: GtkAlignment is abstract
- fun alignment=( x : Float, y : Float ) is extern `{
- gtk_misc_set_alignment( recv, x, y );
+ fun alignment=(x: Float, y: Float) `{
+ gtk_misc_set_alignment(recv, x, y);
`}
- fun padding : GtkAlignment is abstract
+ fun padding: GtkAlignment is abstract
- fun padding=( x : Float, y : Float ) is extern `{
- gtk_misc_set_padding( recv, x, y );
+ fun padding=(x: Float, y: Float) `{
+ gtk_misc_set_padding(recv, x, y);
`}
end
-#A single line text entry field
-#@https://developer.gnome.org/gtk3/3.2/GtkEntry.html
+# A single line text entry field
+# See: https://developer.gnome.org/gtk3/3.2/GtkEntry.html
extern class GtkEntry `{GtkEntry *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkEntry *)gtk_entry_new();
`}
- fun text : String is extern import NativeString.to_s_with_copy `{
- return NativeString_to_s_with_copy( (char *)gtk_entry_get_text( recv ) );
+ fun text: String import NativeString.to_s_with_copy `{
+ return NativeString_to_s_with_copy((char *)gtk_entry_get_text(recv));
`}
- fun text=( value : String) is extern import String.to_cstring`{
- gtk_entry_set_text( recv, String_to_cstring( value ) );
+ fun text=(value: String) import String.to_cstring `{
+ gtk_entry_set_text(recv, String_to_cstring(value));
`}
# Is the text visible or is it the invisible char (such as '*')?
- fun visiblility: Bool is extern `{
- return gtk_entry_get_visibility( recv );
+ fun visiblility: Bool `{
+ return gtk_entry_get_visibility(recv);
`}
# Set the text visiblility
# If false, will use the invisible char (such as '*')
- fun visibility=( is_visible : Bool) is extern `{
- gtk_entry_set_visibility( recv, is_visible );
+ fun visibility=(is_visible: Bool) `{
+ gtk_entry_set_visibility(recv, is_visible);
`}
- fun max_length : Int is extern `{
- return gtk_entry_get_max_length( recv );
+ fun max_length: Int `{
+ return gtk_entry_get_max_length(recv);
`}
- fun max_length=( max : Int) is extern `{
- gtk_entry_set_max_length( recv, max );
+ fun max_length=(max: Int) `{
+ gtk_entry_set_max_length(recv, max);
`}
end
-#Base class for widgets which visualize an adjustment
-#@https://developer.gnome.org/gtk3/3.2/GtkRange.html
+# Base class for widgets which visualize an adjustment
+# See: https://developer.gnome.org/gtk3/3.2/GtkRange.html
extern class GtkRange `{GtkRange *`}
super GtkWidget
- #Gets the current position of the fill level indicator.
- fun fill_level : Float is extern `{
- return gtk_range_get_fill_level( recv );
+ # Gets the current position of the fill level indicator.
+ fun fill_level: Float `{
+ return gtk_range_get_fill_level(recv);
`}
- fun fill_level=( level : Float ) is extern `{
- gtk_range_set_fill_level( recv, level );
+ fun fill_level=(level: Float) `{
+ gtk_range_set_fill_level(recv, level);
`}
- #Gets whether the range is restricted to the fill level.
- fun restricted_to_fill_level : Bool is extern `{
- return gtk_range_get_restrict_to_fill_level( recv );
+ # Gets whether the range is restricted to the fill level.
+ fun restricted_to_fill_level: Bool `{
+ return gtk_range_get_restrict_to_fill_level(recv);
`}
- fun restricted_to_fill_level=( restricted : Bool ) is extern `{
- gtk_range_set_restrict_to_fill_level( recv, restricted );
+ fun restricted_to_fill_level=(restricted: Bool) `{
+ gtk_range_set_restrict_to_fill_level(recv, restricted);
`}
- #Gets whether the range displays the fill level graphically.
- fun show_fill_level : Bool is extern `{
- return gtk_range_get_show_fill_level( recv );
+ # Gets whether the range displays the fill level graphically.
+ fun show_fill_level: Bool `{
+ return gtk_range_get_show_fill_level(recv);
`}
- fun show_fill_level=( is_displayed : Bool ) is extern `{
- gtk_range_set_show_fill_level( recv, is_displayed );
+ fun show_fill_level=(is_displayed: Bool) `{
+ gtk_range_set_show_fill_level(recv, is_displayed);
`}
- fun adjustment : GtkAdjustment is extern `{
- return gtk_range_get_adjustment( recv );
+ fun adjustment: GtkAdjustment `{
+ return gtk_range_get_adjustment(recv);
`}
- fun adjustment=( value : GtkAdjustment ) is extern `{
- gtk_range_set_adjustment( recv, value );
+ fun adjustment=(value: GtkAdjustment) `{
+ gtk_range_set_adjustment(recv, value);
`}
- fun inverted : Bool is extern `{
- return gtk_range_get_inverted( recv );
+ fun inverted: Bool `{
+ return gtk_range_get_inverted(recv);
`}
- fun inverted=( setting : Bool ) is extern `{
- gtk_range_set_inverted( recv, setting );
+ fun inverted=(setting: Bool) `{
+ gtk_range_set_inverted(recv, setting);
`}
- fun value : Float is extern `{
- return gtk_range_get_value( recv );
+ fun value: Float `{
+ return gtk_range_get_value(recv);
`}
- fun value=( val : Float ) is extern `{
- gtk_range_set_value( recv, val );
+ fun value=(val: Float) `{
+ gtk_range_set_value(recv, val);
`}
- fun set_increments( step : Float, page : Float ) is extern `{
- gtk_range_set_increments( recv, step, page );
+ fun set_increments(step: Float, page: Float) `{
+ gtk_range_set_increments(recv, step, page);
`}
- fun set_range( min : Float, max : Float ) is extern `{
- gtk_range_set_range( recv, min, max );
+ fun set_range(min: Float, max: Float) `{
+ gtk_range_set_range(recv, min, max);
`}
- fun round_digits : Int is extern `{
- return gtk_range_get_round_digits( recv );
+ fun round_digits: Int `{
+ return gtk_range_get_round_digits(recv);
`}
- fun round_digits=( nb : Int ) is extern `{
- gtk_range_set_round_digits( recv, nb );
+ fun round_digits=(nb: Int) `{
+ gtk_range_set_round_digits(recv, nb);
`}
- fun size_fixed : Bool is extern `{
- return gtk_range_get_slider_size_fixed( recv );
+ fun size_fixed: Bool `{
+ return gtk_range_get_slider_size_fixed(recv);
`}
- fun size_fixed=( is_fixed : Bool ) is extern `{
- return gtk_range_set_slider_size_fixed( recv, is_fixed );
+ fun size_fixed=(is_fixed: Bool) `{
+ return gtk_range_set_slider_size_fixed(recv, is_fixed);
`}
- fun flippable : Bool is extern `{
- return gtk_range_get_flippable( recv );
+ fun flippable: Bool `{
+ return gtk_range_get_flippable(recv);
`}
- fun min_size=( is_flippable : Bool ) is extern `{
- return gtk_range_set_flippable( recv, is_flippable );
+ fun min_size=(is_flippable: Bool) `{
+ return gtk_range_set_flippable(recv, is_flippable);
`}
- fun min_slider_size : Int is extern `{
- return gtk_range_get_min_slider_size( recv );
+ fun min_slider_size: Int `{
+ return gtk_range_get_min_slider_size(recv);
`}
- fun min_slider_size=( size : Int ) is extern `{
- return gtk_range_set_min_slider_size( recv, size );
+ fun min_slider_size=(size: Int) `{
+ return gtk_range_set_min_slider_size(recv, size);
`}
end
-#A slider widget for selecting a value from a range
-#@https://developer.gnome.org/gtk3/3.2/GtkScale.html
+# A slider widget for selecting a value from a range
+# See: https://developer.gnome.org/gtk3/3.2/GtkScale.html
extern class GtkScale `{GtkScale *`}
super GtkRange
- new ( orientation : GtkOrientation, adjustment : GtkAdjustment ) is extern `{
- return (GtkScale *)gtk_scale_new( orientation, adjustment );
+ new (orientation: GtkOrientation, adjustment: GtkAdjustment) `{
+ return (GtkScale *)gtk_scale_new(orientation, adjustment);
`}
- new with_range ( orientation : GtkOrientation, min : Float, max : Float, step : Float ) is extern `{
- return (GtkScale *)gtk_scale_new_with_range( orientation, min, max, step );
+ new with_range (orientation: GtkOrientation, min: Float, max: Float, step: Float) `{
+ return (GtkScale *)gtk_scale_new_with_range(orientation, min, max, step);
`}
- fun digits : Int is extern `{
- return gtk_scale_get_digits( recv );
+ fun digits: Int `{
+ return gtk_scale_get_digits(recv);
`}
- fun digits=( nb_digits : Int ) is extern `{
- gtk_scale_set_digits( recv, nb_digits );
+ fun digits=(nb_digits: Int) `{
+ gtk_scale_set_digits(recv, nb_digits);
`}
- fun draw_value : Bool is extern `{
- return gtk_scale_get_draw_value( recv );
+ fun draw_value: Bool `{
+ return gtk_scale_get_draw_value(recv);
`}
- fun draw_value=( is_displayed : Bool ) is extern `{
- gtk_scale_set_draw_value( recv, is_displayed );
+ fun draw_value=(is_displayed: Bool) `{
+ gtk_scale_set_draw_value(recv, is_displayed);
`}
- fun value_position : GtkPositionType is extern `{
- return gtk_scale_get_value_pos( recv );
+ fun value_position: GtkPositionType `{
+ return gtk_scale_get_value_pos(recv);
`}
- fun value_position=( pos : GtkPositionType ) is extern `{
- gtk_scale_set_value_pos( recv, pos );
+ fun value_position=(pos: GtkPositionType) `{
+ gtk_scale_set_value_pos(recv, pos);
`}
- fun has_origin : Bool is extern `{
- return gtk_scale_get_has_origin( recv );
+ fun has_origin: Bool `{
+ return gtk_scale_get_has_origin(recv);
`}
- fun has_origin=( orig : Bool ) is extern `{
- gtk_scale_set_has_origin( recv, orig );
+ fun has_origin=(orig: Bool) `{
+ gtk_scale_set_has_origin(recv, orig);
`}
- fun add_mark( value : Float, position : GtkPositionType, markup : String ) is extern import String.to_cstring`{
- gtk_scale_add_mark( recv, value, position, String_to_cstring( markup ) );
+ fun add_mark(value: Float, position: GtkPositionType, markup: String)
+ import String.to_cstring `{
+ gtk_scale_add_mark(recv, value, position, String_to_cstring(markup));
`}
- #Removes any marks that have been added with gtk_scale_add_mark().
- fun clear_marks is extern `{
- gtk_scale_clear_marks( recv );
+ # Removes any marks that have been added with gtk_scale_add_mark().
+ fun clear_marks `{
+ gtk_scale_clear_marks(recv);
`}
-
- #get layout
- #get layout offsets
-
end
-#A scrollbar
-#@https://developer.gnome.org/gtk3/3.2/GtkScrollbar.html
+# A scrollbar
+# See: https://developer.gnome.org/gtk3/3.2/GtkScrollbar.html
extern class GtkScrollbar `{GtkScrollbar *`}
super GtkRange
- new ( orientation : GtkOrientation, adjustment : GtkAdjustment ) is extern `{
- return (GtkScrollbar *)gtk_scrollbar_new( orientation, adjustment );
+ new (orientation: GtkOrientation, adjustment: GtkAdjustment) `{
+ return (GtkScrollbar *)gtk_scrollbar_new(orientation, adjustment);
`}
end
-#A widget that displays a small to medium amount of text
-#@https://developer.gnome.org/gtk3/3.2/GtkLabel.html
+# A widget that displays a small to medium amount of text
+# See: https://developer.gnome.org/gtk3/3.2/GtkLabel.html
extern class GtkLabel `{GtkLabel *`}
super GtkMisc
# Create a GtkLabel with text
- new ( text : String ) is extern import String.to_cstring `{
- return (GtkLabel*)gtk_label_new( String_to_cstring( text ) );
+ new (text: String) import String.to_cstring `{
+ return (GtkLabel*)gtk_label_new(String_to_cstring(text));
`}
# Set the text of the label
- fun text=( text : String ) import String.to_cstring `{
- gtk_label_set_text( recv, String_to_cstring( text ) );
+ fun text=(text: String) import String.to_cstring `{
+ gtk_label_set_text(recv, String_to_cstring(text));
`}
# Returns the text of the label
- fun text : String import NativeString.to_s `{
- return NativeString_to_s( (char*)gtk_label_get_text( recv ) );
+ fun text: String import NativeString.to_s `{
+ return NativeString_to_s((char*)gtk_label_get_text(recv));
`}
# Sets the angle of rotation for the label.
# An angle of 90 reads from from bottom to top, an angle of 270, from top to bottom.
- fun angle=( degre : Float ) `{
- gtk_label_set_angle( recv, degre );
+ fun angle=(degre: Float) `{
+ gtk_label_set_angle(recv, degre);
`}
# Returns the angle of rotation for the label.
- fun angle : Float `{
- return gtk_label_get_angle( recv );
+ fun angle: Float `{
+ return gtk_label_get_angle(recv);
`}
end
-#A widget displaying an image
-#@https://developer.gnome.org/gtk3/3.2/GtkImage.html
+# A widget displaying an image
+# See: https://developer.gnome.org/gtk3/3.2/GtkImage.html
extern class GtkImage `{GtkImage *`}
super GtkMisc
# Create a GtkImage
- new is extern `{
- return (GtkImage*)gtk_image_new( );
+ new `{
+ return (GtkImage*)gtk_image_new();
`}
# Create a GtkImage with text
- new file( filename : String ) is extern import String.to_cstring `{
- return (GtkImage*)gtk_image_new_from_file( String_to_cstring( filename ) );
+ new file(filename: String) import String.to_cstring `{
+ return (GtkImage*)gtk_image_new_from_file(String_to_cstring(filename));
`}
- fun pixel_size : Int is extern `{
- return gtk_image_get_pixel_size( recv );
+ fun pixel_size: Int `{
+ return gtk_image_get_pixel_size(recv);
`}
- fun pixel_size=( size : Int) is extern `{
- gtk_image_set_pixel_size( recv, size );
+ fun pixel_size=(size: Int) `{
+ gtk_image_set_pixel_size(recv, size);
`}
- fun clear is extern `{
- gtk_image_clear( recv );
+ fun clear `{
+ gtk_image_clear(recv);
`}
end
-#enum GtkImageType
-#Describes the image data representation used by a GtkImage.
-#@https://developer.gnome.org/gtk3/3.2/GtkImage.html#GtkImageType
+# enum GtkImageType
+# Describes the image data representation used by a GtkImage.
+# See: https://developer.gnome.org/gtk3/3.2/GtkImage.html#GtkImageType
extern class GtkImageType `{GtkImageType`}
# There is no image displayed by the widget.
new empty `{ return GTK_IMAGE_EMPTY; `}
new gicon `{ return GTK_IMAGE_GICON; `}
end
-#Displays an arrow
-#@https://developer.gnome.org/gtk3/3.2/GtkArrow.html
+# Displays an arrow
+# See: https://developer.gnome.org/gtk3/3.2/GtkArrow.html
extern class GtkArrow `{GtkArrow *`}
super GtkMisc
- new ( arrow_type : GtkArrowType, shadow_type : GtkShadowType ) is extern `{
- return (GtkArrow *)gtk_arrow_new( arrow_type, shadow_type );
+ new (arrow_type: GtkArrowType, shadow_type: GtkShadowType) `{
+ return (GtkArrow *)gtk_arrow_new(arrow_type, shadow_type);
`}
- fun set( arrow_type : GtkArrowType, shadow_type : GtkShadowType ) is extern `{
- gtk_arrow_set( recv, arrow_type, shadow_type );
+ fun set(arrow_type: GtkArrowType, shadow_type: GtkShadowType) `{
+ gtk_arrow_set(recv, arrow_type, shadow_type);
`}
end
-#A widget that emits a signal when clicked on
-#@https://developer.gnome.org/gtk3/stable/GtkButton.html
+# A widget that emits a signal when clicked on
+# See: https://developer.gnome.org/gtk3/stable/GtkButton.html
extern class GtkButton `{GtkButton *`}
super GtkBin
- new is extern `{
- return (GtkButton *)gtk_button_new( );
+ new `{
+ return (GtkButton *)gtk_button_new();
`}
- #Create a GtkButton with text
- new with_label( text : String ) is extern import String.to_cstring `{
- return (GtkButton *)gtk_button_new_with_label( String_to_cstring( text ) );
+ # Create a GtkButton with text
+ new with_label(text: String) import String.to_cstring `{
+ return (GtkButton *)gtk_button_new_with_label(String_to_cstring(text));
`}
- new from_stock( stock_id : String ) is extern import String.to_cstring `{
- return (GtkButton *)gtk_button_new_from_stock( String_to_cstring( stock_id ) );
+ new from_stock(stock_id: String) import String.to_cstring `{
+ return (GtkButton *)gtk_button_new_from_stock(String_to_cstring(stock_id));
`}
- fun text : String is extern `{
- return NativeString_to_s( (char *)gtk_button_get_label( recv ) );
+ fun text: String `{
+ return NativeString_to_s((char *)gtk_button_get_label(recv));
`}
- fun text=( value : String ) is extern import String.to_cstring`{
- gtk_button_set_label( recv, String_to_cstring( value ) );
+ fun text=(value: String) import String.to_cstring `{
+ gtk_button_set_label(recv, String_to_cstring(value));
`}
- fun on_click( to_call : GtkCallable, user_data : nullable Object ) do
- signal_connect( "clicked", to_call, user_data )
+ fun on_click(to_call: GtkCallable, user_data: nullable Object) do
+ signal_connect("clicked", to_call, user_data)
end
end
-#A button which pops up a scale
-#@https://developer.gnome.org/gtk3/stable/GtkScaleButton.html
+# A button which pops up a scale
+# See: https://developer.gnome.org/gtk3/stable/GtkScaleButton.html
extern class GtkScaleButton `{GtkScaleButton *`}
super GtkButton
- #const gchar **icons
- new( size: GtkIconSize, min: Float, max: Float, step: Float ) is extern `{
- return (GtkScaleButton *)gtk_scale_button_new( size, min, max, step, (const char **)0 );
+ # const gchar **icons
+ new(size: GtkIconSize, min: Float, max: Float, step: Float) `{
+ return (GtkScaleButton *)gtk_scale_button_new(size, min, max, step, (const char **)0);
`}
end
-#Create buttons bound to a URL
-#@https://developer.gnome.org/gtk3/stable/GtkLinkButton.html
+# Create buttons bound to a URL
+# See: https://developer.gnome.org/gtk3/stable/GtkLinkButton.html
extern class GtkLinkButton `{GtkLinkButton *`}
super GtkButton
- new( uri: String ) is extern import String.to_cstring `{
- return (GtkLinkButton *)gtk_link_button_new( String_to_cstring(uri) );
+ new(uri: String) import String.to_cstring `{
+ return (GtkLinkButton *)gtk_link_button_new(String_to_cstring(uri));
`}
end
-#A container which can hide its child
-#https://developer.gnome.org/gtk3/stable/GtkExpander.html
+# A container which can hide its child
+# https://developer.gnome.org/gtk3/stable/GtkExpander.html
extern class GtkExpander `{GtkExpander *`}
super GtkBin
- new( lbl : String) is extern import String.to_cstring`{
- return (GtkExpander *)gtk_expander_new( String_to_cstring( lbl ) );
+ new(lbl: String) import String.to_cstring `{
+ return (GtkExpander *)gtk_expander_new(String_to_cstring(lbl));
`}
- new with_mnemonic( lbl : String) is extern import String.to_cstring`{
- return (GtkExpander *)gtk_expander_new_with_mnemonic(String_to_cstring( lbl ));
+ new with_mnemonic(lbl: String) import String.to_cstring `{
+ return (GtkExpander *)gtk_expander_new_with_mnemonic(String_to_cstring(lbl));
`}
- fun expanded : Bool is extern `{
- return gtk_expander_get_expanded( recv );
+ fun expanded: Bool `{
+ return gtk_expander_get_expanded(recv);
`}
- fun expanded=( is_expanded : Bool ) is extern `{
- gtk_expander_set_expanded( recv, is_expanded );
+ fun expanded=(is_expanded: Bool) `{
+ gtk_expander_set_expanded(recv, is_expanded);
`}
- fun spacing : Int is extern `{
- return gtk_expander_get_spacing( recv );
+ fun spacing: Int `{
+ return gtk_expander_get_spacing(recv);
`}
- fun spacing=( pixels : Int ) is extern `{
- gtk_expander_set_spacing( recv, pixels );
+ fun spacing=(pixels: Int) `{
+ gtk_expander_set_spacing(recv, pixels);
`}
- fun label_text : String is extern `{
- return NativeString_to_s( (char *)gtk_expander_get_label( recv ) );
+ fun label_text: String `{
+ return NativeString_to_s((char *)gtk_expander_get_label(recv));
`}
- fun label_text=( lbl : String ) is extern import String.to_cstring`{
- gtk_expander_set_label( recv, String_to_cstring( lbl ) );
+ fun label_text=(lbl: String) import String.to_cstring `{
+ gtk_expander_set_label(recv, String_to_cstring(lbl));
`}
- fun use_underline : Bool is extern `{
- return gtk_expander_get_use_underline( recv );
+ fun use_underline: Bool `{
+ return gtk_expander_get_use_underline(recv);
`}
- fun use_underline=( used : Bool) is extern `{
- gtk_expander_set_use_underline( recv, used );
+ fun use_underline=(used: Bool) `{
+ gtk_expander_set_use_underline(recv, used);
`}
- fun use_markup : Bool is extern `{
- return gtk_expander_get_use_markup( recv );
+ fun use_markup: Bool `{
+ return gtk_expander_get_use_markup(recv);
`}
- fun use_markup=( used : Bool) is extern `{
- gtk_expander_set_use_markup( recv, used );
+ fun use_markup=(used: Bool) `{
+ gtk_expander_set_use_markup(recv, used);
`}
- fun label_widget : GtkWidget is extern `{
- return gtk_expander_get_label_widget( recv );
+ fun label_widget: GtkWidget `{
+ return gtk_expander_get_label_widget(recv);
`}
- fun label_widget=( widget : GtkWidget ) is extern `{
- gtk_expander_set_label_widget( recv, widget );
+ fun label_widget=(widget: GtkWidget) `{
+ gtk_expander_set_label_widget(recv, widget);
`}
- fun label_fill : Bool is extern `{
- return gtk_expander_get_label_fill( recv );
+ fun label_fill: Bool `{
+ return gtk_expander_get_label_fill(recv);
`}
- fun label_fill=( fill : Bool ) is extern `{
- gtk_expander_set_label_fill( recv, fill );
+ fun label_fill=(fill: Bool) `{
+ gtk_expander_set_label_fill(recv, fill);
`}
- fun resize_toplevel : Bool is extern `{
- return gtk_expander_get_resize_toplevel( recv );
+ fun resize_toplevel: Bool `{
+ return gtk_expander_get_resize_toplevel(recv);
`}
- fun resize_toplevel=( resize : Bool ) is extern `{
- gtk_expander_set_resize_toplevel( recv, resize );
+ fun resize_toplevel=(resize: Bool) `{
+ gtk_expander_set_resize_toplevel(recv, resize);
`}
end
-#An abstract class for laying out GtkCellRenderers
-#@https://developer.gnome.org/gtk3/stable/GtkCellArea.html
+# An abstract class for laying out GtkCellRenderers
+# See: https://developer.gnome.org/gtk3/stable/GtkCellArea.html
extern class GtkComboBox `{GtkComboBox *`}
super GtkBin
- new is extern `{
- return (GtkComboBox *)gtk_combo_box_new( );
+ new `{
+ return (GtkComboBox *)gtk_combo_box_new();
`}
- new with_entry is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_entry( );
+ new with_entry `{
+ return (GtkComboBox *)gtk_combo_box_new_with_entry();
`}
- new with_model( model : GtkTreeModel ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_model( model );
+ new with_model(model: GtkTreeModel) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_model(model);
`}
- new with_model_and_entry( model : GtkTreeModel ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_model_and_entry( model );
+ new with_model_and_entry(model: GtkTreeModel) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_model_and_entry(model);
`}
- new with_area( area : GtkCellArea ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_area( area );
+ new with_area(area: GtkCellArea) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_area(area);
`}
- new with_area_and_entry( area : GtkCellArea ) is extern `{
- return (GtkComboBox *)gtk_combo_box_new_with_area_and_entry( area );
+ new with_area_and_entry(area: GtkCellArea) `{
+ return (GtkComboBox *)gtk_combo_box_new_with_area_and_entry(area);
`}
- fun wrap_width : Int is extern `{
- return gtk_combo_box_get_wrap_width( recv );
+ fun wrap_width: Int `{
+ return gtk_combo_box_get_wrap_width(recv);
`}
- fun wrap_width=( width : Int ) is extern `{
- gtk_combo_box_set_wrap_width( recv, width );
+ fun wrap_width=(width: Int) `{
+ gtk_combo_box_set_wrap_width(recv, width);
`}
- fun row_span_col : Int is extern `{
- return gtk_combo_box_get_row_span_column( recv );
+ fun row_span_col: Int `{
+ return gtk_combo_box_get_row_span_column(recv);
`}
- fun row_span_col=( row_span : Int ) is extern `{
- gtk_combo_box_set_row_span_column( recv, row_span );
+ fun row_span_col=(row_span: Int) `{
+ gtk_combo_box_set_row_span_column(recv, row_span);
`}
- fun col_span_col : Int is extern `{
- return gtk_combo_box_get_column_span_column( recv );
+ fun col_span_col: Int `{
+ return gtk_combo_box_get_column_span_column(recv);
`}
- fun col_span_col=( col_span : Int ) is extern `{
- gtk_combo_box_set_column_span_column( recv, col_span );
+ fun col_span_col=(col_span: Int) `{
+ gtk_combo_box_set_column_span_column(recv, col_span);
`}
- fun active_item : Int is extern `{
- return gtk_combo_box_get_active( recv );
+ fun active_item: Int `{
+ return gtk_combo_box_get_active(recv);
`}
- fun active_item=( active : Int ) is extern `{
- gtk_combo_box_set_active( recv, active );
+ fun active_item=(active: Int) `{
+ gtk_combo_box_set_active(recv, active);
`}
- #fun active_iter : GtkTreeIter is extern `{
- #`}
- #
- #fun active_iter=( active : Bool ) is extern `{
- #`}
-
- fun column_id : Int is extern `{
- return gtk_combo_box_get_id_column( recv );
+ fun column_id: Int `{
+ return gtk_combo_box_get_id_column(recv);
`}
- fun column_id=( id_column : Int ) is extern `{
- gtk_combo_box_set_id_column( recv, id_column );
+ fun column_id=(id_column: Int) `{
+ gtk_combo_box_set_id_column(recv, id_column);
`}
- fun active_id : String is extern `{
- return NativeString_to_s( (char *)gtk_combo_box_get_active_id( recv ) );
+ fun active_id: String `{
+ return NativeString_to_s((char *)gtk_combo_box_get_active_id(recv));
`}
- fun active_id=( id_active : String ) is extern import String.to_cstring`{
- gtk_combo_box_set_active_id( recv, String_to_cstring( id_active ) );
+ fun active_id=(id_active: String) import String.to_cstring `{
+ gtk_combo_box_set_active_id(recv, String_to_cstring(id_active));
`}
- fun model : GtkTreeModel is extern `{
- return gtk_combo_box_get_model( recv );
+ fun model: GtkTreeModel `{
+ return gtk_combo_box_get_model(recv);
`}
- fun model=( model : GtkTreeModel ) is extern `{
- gtk_combo_box_set_model( recv, model );
+ fun model=(model: GtkTreeModel) `{
+ gtk_combo_box_set_model(recv, model);
`}
- fun popup is extern `{
- gtk_combo_box_popup( recv );
+ fun popup `{
+ gtk_combo_box_popup(recv);
`}
- fun popdown is extern `{
- gtk_combo_box_popdown( recv );
+ fun popdown `{
+ gtk_combo_box_popdown(recv);
`}
- fun title : String is extern`{
- return NativeString_to_s( (char *)gtk_combo_box_get_title( recv ) );
+ fun title: String `{
+ return NativeString_to_s((char *)gtk_combo_box_get_title(recv));
`}
- fun title=( t : String ) is extern import String.to_cstring `{
- gtk_combo_box_set_title( recv, String_to_cstring( t ) );
+ fun title=(t: String) import String.to_cstring `{
+ gtk_combo_box_set_title(recv, String_to_cstring(t));
`}
- fun has_entry : Bool is extern `{
- return gtk_combo_box_get_has_entry( recv );
+ fun has_entry: Bool `{
+ return gtk_combo_box_get_has_entry(recv);
`}
- fun with_fixed : Bool is extern `{
- return gtk_combo_box_get_popup_fixed_width( recv );
+ fun with_fixed: Bool `{
+ return gtk_combo_box_get_popup_fixed_width(recv);
`}
- fun with_fixed=( fixed : Bool ) is extern `{
- gtk_combo_box_set_popup_fixed_width( recv, fixed );
+ fun with_fixed=(fixed: Bool) `{
+ gtk_combo_box_set_popup_fixed_width(recv, fixed);
`}
end
-#Show a spinner animation
-#@https://developer.gnome.org/gtk3/3.2/GtkSpinner.html
+# Show a spinner animation
+# See: https://developer.gnome.org/gtk3/3.2/GtkSpinner.html
extern class GtkSpinner `{GtkSpinner *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkSpinner *)gtk_spinner_new();
`}
- fun start is extern `{
- return gtk_spinner_start( recv );
+ fun start `{
+ return gtk_spinner_start(recv);
`}
- fun stop is extern `{
- return gtk_spinner_stop( recv );
+ fun stop `{
+ return gtk_spinner_stop(recv);
`}
end
-#A "light switch" style toggle
-#@https://developer.gnome.org/gtk3/3.2/GtkSwitch.html
+# A "light switch" style toggle
+# See: https://developer.gnome.org/gtk3/3.2/GtkSwitch.html
extern class GtkSwitch `{GtkSwitch *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkSwitch *)gtk_switch_new();
`}
- fun active : Bool is extern `{
- return gtk_switch_get_active( recv );
+ fun active: Bool `{
+ return gtk_switch_get_active(recv);
`}
- fun active=( is_active : Bool ) is extern `{
- return gtk_switch_set_active( recv, is_active );
+ fun active=(is_active: Bool) `{
+ return gtk_switch_set_active(recv, is_active);
`}
end
-
-#A widget which controls the alignment and size of its child
-#https://developer.gnome.org/gtk3/stable/GtkAlignment.html
+# A widget which controls the alignment and size of its child
+# https://developer.gnome.org/gtk3/stable/GtkAlignment.html
extern class GtkAlignment `{GtkAlignment *`}
super GtkBin
- new ( xalign : Float, yalign : Float, xscale : Float, yscale : Float ) is extern `{
- return (GtkAlignment *)gtk_alignment_new( xalign, yalign, xscale, yscale );
+ new (xalign: Float, yalign: Float, xscale: Float, yscale: Float) `{
+ return (GtkAlignment *)gtk_alignment_new(xalign, yalign, xscale, yscale);
`}
- fun set ( xalign : Float, yalign : Float, xscale : Float, yscale : Float ) is extern `{
- gtk_alignment_set( recv, xalign, yalign, xscale, yscale );
+ fun set (xalign: Float, yalign: Float, xscale: Float, yscale: Float) `{
+ gtk_alignment_set(recv, xalign, yalign, xscale, yscale);
`}
- #get_padding
- #set_padding
end
-#A representation of an adjustable bounded value
-#@https://developer.gnome.org/gtk3/stable/GtkAdjustment.html#GtkAdjustment.description
+# A representation of an adjustable bounded value
+# See: https://developer.gnome.org/gtk3/stable/GtkAdjustment.html#GtkAdjustment.description
extern class GtkAdjustment `{GtkAdjustment *`}
-
end
extern class GdkColor `{GdkColor*`}
- new is extern `{
- GdkColor * col = malloc(sizeof(GdkColor));
- /*gdk_color_parse( "red", recv );*/
- gdk_color_parse( "red", col);
- return col;
+ new (color_name: String) import String.to_cstring `{
+ GdkColor *color = malloc(sizeof(GdkColor));
+ gdk_color_parse(String_to_cstring(color_name), color);
+ return color;
`}
end
extern class GdkRGBA `{GdkRGBA*`}
- new is extern `{
- `}
end
#include <gtk/gtk.h>
`}
-#Create popup windows
-#@https://developer.gnome.org/gtk3/stable/GtkDialog.html
+# Create popup windows
+# See: https://developer.gnome.org/gtk3/stable/GtkDialog.html
extern class GtkDialog `{GtkDialog *`}
super GtkWindow
- new is extern `{
- return (GtkDialog *)gtk_dialog_new( );
+ new `{
+ return (GtkDialog *)gtk_dialog_new();
`}
- new with_buttons( title : String, parent : GtkWindow, flags : GtkDialogFlags) is extern import String.to_cstring`{
- return (GtkDialog *)gtk_dialog_new_with_buttons( String_to_cstring( title ), parent, flags, "", NULL );
+ new with_buttons(title: String, parent: GtkWindow, flags: GtkDialogFlags)
+ import String.to_cstring `{
+ return (GtkDialog *)gtk_dialog_new_with_buttons(
+ String_to_cstring(title), parent, flags, "", NULL);
`}
- fun run is extern `{
- gtk_dialog_run( recv );
+ fun run `{
+ gtk_dialog_run(recv);
`}
-
end
-#Display information about an application
-#@https://developer.gnome.org/gtk3/stable/GtkAboutDialog.html
+# Display information about an application
+# See: https://developer.gnome.org/gtk3/stable/GtkAboutDialog.html
extern class GtkAboutDialog `{GtkAboutDialog *`}
super GtkDialog
- new is extern `{
- return (GtkAboutDialog *)gtk_about_dialog_new( );
+ new `{
+ return (GtkAboutDialog *)gtk_about_dialog_new();
`}
- fun program_name : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_program_name( recv ) );
+ fun program_name: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_program_name(recv));
`}
- fun program_name=( name : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_program_name( recv, String_to_cstring( name ) );
+ fun program_name=(name: String) import String.to_cstring `{
+ gtk_about_dialog_set_program_name(recv, String_to_cstring(name));
`}
- fun version : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_version( recv ) );
+ fun version: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_version(recv));
`}
- fun version=( v : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_version( recv, String_to_cstring( v ) );
+ fun version=(v: String) import String.to_cstring `{
+ gtk_about_dialog_set_version(recv, String_to_cstring(v));
`}
- fun copyright : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_copyright( recv ) );
+ fun copyright: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_copyright(recv));
`}
- fun copyright=( c : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_copyright( recv, String_to_cstring( c ) );
+ fun copyright=(c: String) import String.to_cstring `{
+ gtk_about_dialog_set_copyright(recv, String_to_cstring(c));
`}
- fun comments : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_comments( recv ) );
+ fun comments: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_comments(recv));
`}
- fun comments=( com : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_comments( recv, String_to_cstring( com ) );
+ fun comments=(com: String) import String.to_cstring `{
+ gtk_about_dialog_set_comments(recv, String_to_cstring(com));
`}
- fun license : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_license( recv ) );
+ fun license: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_license(recv));
`}
- fun license=( li : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_license( recv, String_to_cstring( li ) );
+ fun license=(li: String) import String.to_cstring `{
+ gtk_about_dialog_set_license(recv, String_to_cstring(li));
`}
- #license_type
+ # license_type
- fun website : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_about_dialog_get_website( recv ) );
+ fun website: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_about_dialog_get_website(recv));
`}
- fun website=( link : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_website( recv, String_to_cstring( link ) );
+ fun website=(link: String) import String.to_cstring `{
+ gtk_about_dialog_set_website(recv, String_to_cstring(link));
`}
- fun website_label : String import NativeString.to_s `{
- return NativeString_to_s( (char *) gtk_about_dialog_get_website_label( recv ) );
+ fun website_label: String import NativeString.to_s `{
+ return NativeString_to_s((char *) gtk_about_dialog_get_website_label(recv));
`}
- fun website_label=( link_label : String ) is extern import String.to_cstring`{
- gtk_about_dialog_set_website_label( recv, String_to_cstring( link_label ) );
+ fun website_label=(link_label: String) import String.to_cstring `{
+ gtk_about_dialog_set_website_label(recv, String_to_cstring(link_label));
`}
- #TODO
- #fun authors : String is extern`{
- # return NativeString_to_s( gtk_about_dialog_get_authors( recv ) );
- #`}
+ # TODO
+ # fun authors: String`{
+ # return NativeString_to_s(gtk_about_dialog_get_authors(recv));
+ # `}
- #TODO
- #fun authors=( authors_list : String ) is extern import String.to_cstring`{
- # gtk_about_dialog_set_authors( recv, String_to_cstring( authors_list ) );
- #`}
+ # TODO
+ # fun authors=(authors_list: String) import String.to_cstring`{
+ # gtk_about_dialog_set_authors(recv, String_to_cstring(authors_list));
+ # `}
- fun show_about_dialog(parent: GtkWindow, params: String) import String.to_cstring `{
+ fun show_about_dialog(parent: GtkWindow, params: String)
+ import String.to_cstring `{
gtk_show_about_dialog(parent, String_to_cstring(params), NULL);
`}
end
-#An application chooser dialog
-#@https://developer.gnome.org/gtk3/stable/GtkAppChooserDialog.html
+# An application chooser dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkAppChooserDialog.html
extern class GtkAppChooserDialog `{GtkAppChooserDialog *`}
super GtkDialog
- #TODO - GFile
- #new ( parent : GtkWindow, flags : GtkDialogFlags, file : GFile ) is extern `{
- # return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new( parent, flags, file );
- #`}
+ # TODO - GFile
+ # new (parent: GtkWindow, flags: GtkDialogFlags, file: GFile) `{
+ # return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new(parent, flags, file);
+ # `}
- new for_content_type ( parent : GtkWindow, flags : GtkDialogFlags, content_type : String ) is extern import String.to_cstring `{
- return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new_for_content_type( parent, flags, String_to_cstring( content_type ) );
+ new for_content_type (parent: GtkWindow, flags: GtkDialogFlags, content_type: String)
+ import String.to_cstring `{
+ return (GtkAppChooserDialog *)gtk_app_chooser_dialog_new_for_content_type(
+ parent, flags, String_to_cstring(content_type));
`}
- fun widget : GtkWidget is extern `{ return gtk_app_chooser_dialog_get_widget( recv ); `}
+ fun widget: GtkWidget `{ return gtk_app_chooser_dialog_get_widget(recv); `}
- fun heading : String import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_app_chooser_dialog_get_heading( recv ) );
+ fun heading: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_app_chooser_dialog_get_heading(recv));
`}
- fun heading=( text : String ) is extern import String.to_cstring `{
- gtk_app_chooser_dialog_set_heading( recv, String_to_cstring( text ) );
+ fun heading=(text: String) import String.to_cstring `{
+ gtk_app_chooser_dialog_set_heading(recv, String_to_cstring(text));
`}
end
-#A dialog for choosing colors
-#@https://developer.gnome.org/gtk3/stable/GtkColorChooserDialog.html
+# A dialog for choosing colors
+# See: https://developer.gnome.org/gtk3/stable/GtkColorChooserDialog.html
extern class GtkColorChooserDialog `{GtkColorChooserDialog *`}
super GtkDialog
- new ( title : String, parent : GtkWindow ) is extern import String.to_cstring `{
- return (GtkColorChooserDialog *)gtk_color_chooser_dialog_new( String_to_cstring( title ), parent );
+ new (title: String, parent: GtkWindow) import String.to_cstring `{
+ return (GtkColorChooserDialog *)gtk_color_chooser_dialog_new(
+ String_to_cstring(title), parent);
`}
end
-#A file chooser dialog, suitable for "File/Open" or "File/Save" commands
-#@https://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html
+# A file chooser dialog, suitable for "File/Open" or "File/Save" commands
+# See: https://developer.gnome.org/gtk3/stable/GtkFileChooserDialog.html
extern class GtkFileChooserDialog `{GtkFileChooserDialog *`}
super GtkDialog
- new ( title : String, parent : GtkWindow, action : GtkFileChooserAction ) is extern import String.to_cstring `{
- return (GtkFileChooserDialog *)gtk_file_chooser_dialog_new( String_to_cstring( title ), parent, action, "", NULL );
+ new (title: String, parent: GtkWindow, action: GtkFileChooserAction)
+ import String.to_cstring `{
+ return (GtkFileChooserDialog *)gtk_file_chooser_dialog_new(
+ String_to_cstring(title), parent, action, "", NULL);
`}
end
-#enum GtkFileChooserAction
-#Describes whether a GtkFileChooser is being used to open existing files or to save to a possibly new file.
-#@https://developer.gnome.org/gtk3/stable/GtkFileChooser.html#GtkFileChooserAction
+# enum GtkFileChooserAction
+#
+# Describes whether a GtkFileChooser is being used to open existing files or to save to a possibly new file.
+# See: https://developer.gnome.org/gtk3/stable/GtkFileChooser.html#GtkFileChooserAction
extern class GtkFileChooserAction `{GtkFileChooserAction`}
- #Indicates open mode. The file chooser will only let the user pick an existing file.
+ # Open file mode
+ #
+ # The file chooser will only let the user pick an existing file.
new open `{ return GTK_FILE_CHOOSER_ACTION_OPEN; `}
- #Indicates save mode. The file chooser will let the user pick an existing file, or type in a new filename.
+ # Save file mode
+ #
+ # The file chooser will let the user pick an existing file, or type in a new filename.
new save `{ return GTK_FILE_CHOOSER_ACTION_SAVE; `}
- #Indicates an Open mode for selecting folders. The file chooser will let the user pick an existing folder.
+ # Select folder mode
+ #
+ # The file chooser will let the user pick an existing folder.
new select_folder `{ return GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; `}
- #Indicates a mode for creating a new folder. The file chooser will let the user name an existing or new folder.
+ # Create a new folder mode
+ #
+ # The file chooser will let the user name an existing or new folder.
new create_folder `{ return GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER; `}
end
-#A dialog for selecting fonts
-#@https://developer.gnome.org/gtk3/stable/GtkFontChooserDialog.html
+# A dialog for selecting fonts
+# See: https://developer.gnome.org/gtk3/stable/GtkFontChooserDialog.html
extern class GtkFontChooserDialog `{GtkFontChooserDialog *`}
super GtkDialog
- new ( title : String, parent : GtkWindow ) is extern `{
- return (GtkFontChooserDialog *)gtk_font_chooser_dialog_new( String_to_cstring( title ), parent );
+ new (title: String, parent: GtkWindow) `{
+ return (GtkFontChooserDialog *)gtk_font_chooser_dialog_new(String_to_cstring(title), parent);
`}
end
-#A convenient message window
-#@https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html
+# A convenient message window
+# See: https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html
extern class GtkMessageDialog `{GtkMessageDialog *`}
super GtkDialog
- new ( parent : GtkWindow, flags : GtkDialogFlags, msg_type : GtkMessageType, btn_type : GtkButtonsType, format : String ) is extern import String.to_cstring `{
- return (GtkMessageDialog *)gtk_message_dialog_new( parent, flags, msg_type, btn_type, String_to_cstring( format ), NULL );
+ new (parent: GtkWindow, flags: GtkDialogFlags, msg_type: GtkMessageType, btn_type: GtkButtonsType, format: String) import String.to_cstring `{
+ return (GtkMessageDialog *)gtk_message_dialog_new(parent, flags, msg_type, btn_type, String_to_cstring(format), NULL);
`}
end
-#enum GtkButtonsType
-#Prebuilt sets of buttons for the dialog. If none of these choices are appropriate, simply use GTK_BUTTONS_NONE then call gtk_dialog_add_buttons().
-#@https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkButtonsType
+# enum GtkButtonsType
+# Prebuilt sets of buttons for the dialog. If none of these choices are appropriate, simply use GTK_BUTTONS_NONE then call gtk_dialog_add_buttons().
+# See: https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkButtonsType
extern class GtkButtonsType `{GtkButtonsType`}
- #No buttons at all
+ # No buttons at all
new none `{ return GTK_BUTTONS_NONE; `}
- #An OK button.
+ # An OK button.
new ok `{ return GTK_BUTTONS_OK; `}
- #A Close button.
+ # A Close button.
new close `{ return GTK_BUTTONS_CLOSE; `}
- #A Cancel button.
+ # A Cancel button.
new cancel `{ return GTK_BUTTONS_CANCEL; `}
- #Yes and No buttons.
+ # Yes and No buttons.
new yes_no `{ return GTK_BUTTONS_YES_NO; `}
- #OK and Cancel buttons.
+ # OK and Cancel buttons.
new ok_cancel `{ return GTK_BUTTONS_OK_CANCEL; `}
end
-#enum GtkMessageType
-#The type of message being displayed in the dialog.
-#@https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkMessageType
+# enum GtkMessageType
+# The type of message being displayed in the dialog.
+# See: https://developer.gnome.org/gtk3/stable/GtkMessageDialog.html#GtkMessageType
extern class GtkMessageType `{GtkMessageType`}
- #Informational message
+ # Informational message
new info `{ return GTK_MESSAGE_INFO; `}
- #Non-fatal warning message.
+ # Non-fatal warning message.
new warning `{ return GTK_MESSAGE_WARNING; `}
- #Question requiring a choice.
+ # Question requiring a choice.
new question `{ return GTK_MESSAGE_QUESTION; `}
- #Fatal error message.
+ # Fatal error message.
new error `{ return GTK_MESSAGE_ERROR; `}
- #None of the above, doesn't get an icon.
+ # None of the above, doesn't get an icon.
new other `{ return GTK_MESSAGE_OTHER; `}
end
-#A page setup dialog
-#@https://developer.gnome.org/gtk3/stable/GtkPageSetupUnixDialog.html
-#extern class GtkPageSetupUnixDialog `{GtkPageSetupUnixDialog *`}
+# A page setup dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkPageSetupUnixDialog.html
+# extern class GtkPageSetupUnixDialog `{GtkPageSetupUnixDialog *`}
# super GtkDialog
#
-#end
+# end
-#A print dialog
-#@https://developer.gnome.org/gtk3/stable/GtkPrintUnixDialog.html
-#extern class GtkPrintUnixDialog `{GtkPrintUnixDialog *`}
+# A print dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkPrintUnixDialog.html
+# extern class GtkPrintUnixDialog `{GtkPrintUnixDialog *`}
# super GtkDialog
#
-#end
+# end
-#Displays recently used files in a dialog
-#@https://developer.gnome.org/gtk3/stable/GtkRecentChooserDialog.html
+# Displays recently used files in a dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkRecentChooserDialog.html
extern class GtkRecentChooserDialog `{GtkRecentChooserDialog *`}
super GtkDialog
end
-#enum GtkDialogFlags
-#Flags used to influence dialog construction.
-#@https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkDialogFlags
+# enum GtkDialogFlags
+# Flags used to influence dialog construction.
+# See: https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkDialogFlags
extern class GtkDialogFlags `{GtkDialogFlags`}
- #Make the constructed dialog modal.
+ # Make the constructed dialog modal.
new modal `{ return GTK_DIALOG_MODAL; `}
- #Destroy the dialog when its parent is destroyed.
+ # Destroy the dialog when its parent is destroyed.
new destroy_with_parent `{ return GTK_DIALOG_DESTROY_WITH_PARENT; `}
end
-#enum GtkResponseType
-#Predefined values for use as response ids in gtk_dialog_add_button().
-#@https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkResponseType
+# enum GtkResponseType
+# Predefined values for use as response ids in gtk_dialog_add_button().
+# See: https://developer.gnome.org/gtk3/stable/GtkDialog.html#GtkResponseType
extern class GtkResponseType `{GtkResponseType`}
- #Returned if an action widget has no response id, or if the dialog gets programmatically hidden or destroyed.
+ # Returned if an action widget has no response id, or if the dialog gets programmatically hidden or destroyed.
new none `{ return GTK_RESPONSE_NONE; `}
- #Generic response id, not used by GTK+ dialogs.
+ # Generic response id, not used by GTK+ dialogs.
new reject `{ return GTK_RESPONSE_REJECT; `}
- #Generic response id, not used by GTK+ dialogs
+ # Generic response id, not used by GTK+ dialogs
new accept `{ return GTK_RESPONSE_ACCEPT; `}
- #Returned if the dialog is deleted
+ # Returned if the dialog is deleted
new delete_event `{ return GTK_RESPONSE_DELETE_EVENT; `}
- #Returned by OK buttons in GTK+ dialogs.
+ # Returned by OK buttons in GTK+ dialogs.
new ok `{ return GTK_RESPONSE_OK; `}
- #Returned by Cancel buttons in GTK+ dialogs.
+ # Returned by Cancel buttons in GTK+ dialogs.
new cancel `{ return GTK_RESPONSE_CANCEL; `}
- #Returned by OK Close in GTK+ dialogs.
+ # Returned by OK Close in GTK+ dialogs.
new close `{ return GTK_RESPONSE_CLOSE; `}
- #Returned by OK Yes in GTK+ dialogs.
+ # Returned by OK Yes in GTK+ dialogs.
new yes `{ return GTK_RESPONSE_YES; `}
- #Returned by OK No in GTK+ dialogs.
+ # Returned by OK No in GTK+ dialogs.
new no `{ return GTK_RESPONSE_NO; `}
- #Returned by OK Apply in GTK+ dialogs.
+ # Returned by OK Apply in GTK+ dialogs.
new apply `{ return GTK_RESPONSE_APPLY; `}
- #Returned by OK Help in GTK+ dialogs.
+ # Returned by OK Help in GTK+ dialogs.
new help `{ return GTK_RESPONSE_HELP; `}
end
# See the License for the specific language governing permissions and
# limitations under the License.
-module gtk_widgets_ext is pkgconfig("gtk+-3.0")
+module gtk_widgets_ext is pkgconfig "gtk+-3.0"
import gtk_core
-#Displays a calendar and allows the user to select a date
-#@https://developer.gnome.org/gtk3/3.2/GtkCalendar.html
+# Displays a calendar and allows the user to select a date
+# See: https://developer.gnome.org/gtk3/3.2/GtkCalendar.html
extern class GtkCalendar `{GtkCalendar *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkCalendar *)gtk_calendar_new();
`}
- fun month=( month : Int, year : Int ) is extern `{
- gtk_calendar_select_month( recv, month, year );
+ fun month=(month: Int, year: Int) `{
+ gtk_calendar_select_month(recv, month, year);
`}
- fun day=( day : Int ) is extern `{
- gtk_calendar_select_day( recv, day );
+ fun day=(day: Int) `{
+ gtk_calendar_select_day(recv, day);
`}
- fun mark_day( day : Int ) is extern `{
- gtk_calendar_mark_day( recv, day );
+ fun mark_day(day: Int) `{
+ gtk_calendar_mark_day(recv, day);
`}
- fun unmark_day( day : Int ) is extern `{
- gtk_calendar_unmark_day( recv, day );
+ fun unmark_day(day: Int) `{
+ gtk_calendar_unmark_day(recv, day);
`}
- fun is_marked( day : Int ): Bool is extern `{
- return gtk_calendar_get_day_is_marked( recv, day );
+ fun is_marked(day: Int): Bool `{
+ return gtk_calendar_get_day_is_marked(recv, day);
`}
- fun clear_marks is extern `{
- gtk_calendar_clear_marks( recv );
+ fun clear_marks `{
+ gtk_calendar_clear_marks(recv);
`}
- fun display_options : GtkCalendarDisplayOptions is extern `{
- return gtk_calendar_get_display_options( recv );
+ fun display_options: GtkCalendarDisplayOptions `{
+ return gtk_calendar_get_display_options(recv);
`}
- fun display_options=( options : GtkCalendarDisplayOptions) is extern `{
- gtk_calendar_set_display_options( recv, options );
+ fun display_options=(options: GtkCalendarDisplayOptions) `{
+ gtk_calendar_set_display_options(recv, options);
`}
- #date en nit...
+ # date en nit...
fun date: String is abstract
end
-#enum GtkCalendarDisplayOptions
-#@https://developer.gnome.org/gtk3/3.2/GtkCalendar.html#GtkCalendarDisplayOptions
+# enum GtkCalendarDisplayOptions
+# See: https://developer.gnome.org/gtk3/3.2/GtkCalendar.html#GtkCalendarDisplayOptions
extern class GtkCalendarDisplayOptions `{GtkCalendarDisplayOptions`}
new show_heading `{ return GTK_CALENDAR_SHOW_HEADING; `}
new show_day_names `{ return GTK_CALENDAR_SHOW_DAY_NAMES; `}
new show_details `{ return GTK_CALENDAR_SHOW_DETAILS; `}
end
-#A separator widget
-#@https://developer.gnome.org/gtk3/stable/GtkSeparator.html
+# A separator widget
+# See: https://developer.gnome.org/gtk3/stable/GtkSeparator.html
extern class GtkSeparator `{GtkSeparator *`}
super GtkWidget
- new ( orientation : GtkOrientation ) is extern `{
- return (GtkSeparator *)gtk_separator_new( orientation );
+ new (orientation: GtkOrientation) `{
+ return (GtkSeparator *)gtk_separator_new(orientation);
`}
end
-#A widget which indicates progress visually
-#@https://developer.gnome.org/gtk3/3.2/GtkProgressBar.html
+# A widget which indicates progress visually
+# See: https://developer.gnome.org/gtk3/3.2/GtkProgressBar.html
extern class GtkProgressBar `{GtkProgressBar *`}
super GtkWidget
- new is extern `{
+ new `{
return (GtkProgressBar *)gtk_progress_bar_new();
`}
- fun pulse is extern `{
- gtk_progress_bar_pulse( recv );
+ fun pulse `{
+ gtk_progress_bar_pulse(recv);
`}
- fun pulse_step : Float is extern `{
- return gtk_progress_bar_get_pulse_step( recv );
+ fun pulse_step: Float `{
+ return gtk_progress_bar_get_pulse_step(recv);
`}
- fun pulse_step=( step : Float ) is extern `{
- gtk_progress_bar_set_pulse_step( recv, step);
+ fun pulse_step=(step: Float) `{
+ gtk_progress_bar_set_pulse_step(recv, step);
`}
- fun fraction : Float is extern `{
- return gtk_progress_bar_get_fraction( recv );
+ fun fraction: Float `{
+ return gtk_progress_bar_get_fraction(recv);
`}
- fun fraction=( fraction : Float) is extern `{
- gtk_progress_bar_set_fraction( recv, fraction );
+ fun fraction=(fraction: Float) `{
+ gtk_progress_bar_set_fraction(recv, fraction);
`}
- fun inverted : Bool is extern `{
- return gtk_progress_bar_get_inverted( recv );
+ fun inverted: Bool `{
+ return gtk_progress_bar_get_inverted(recv);
`}
- fun inverted=( is_inverted : Bool) is extern `{
- gtk_progress_bar_set_inverted( recv, is_inverted );
+ fun inverted=(is_inverted: Bool) `{
+ gtk_progress_bar_set_inverted(recv, is_inverted);
`}
- fun show_text : Bool is extern `{
- return gtk_progress_bar_get_show_text( recv );
+ fun show_text: Bool `{
+ return gtk_progress_bar_get_show_text(recv);
`}
- fun show_text=( show : Bool) is extern `{
- gtk_progress_bar_set_show_text( recv, show );
+ fun show_text=(show: Bool) `{
+ gtk_progress_bar_set_show_text(recv, show);
`}
- fun text : String is extern import NativeString.to_s `{
- return NativeString_to_s( (char *)gtk_progress_bar_get_text( recv ) );
+ fun text: String import NativeString.to_s `{
+ return NativeString_to_s((char *)gtk_progress_bar_get_text(recv));
`}
- fun text=( value : String) is extern import String.to_cstring`{
- gtk_progress_bar_set_text( recv, String_to_cstring( value ) );
+ fun text=(value: String) import String.to_cstring `{
+ gtk_progress_bar_set_text(recv, String_to_cstring(value));
`}
fun ellipsize is abstract
extern class GtkColorSelectionDialog
super GtkWidget
- new ( title : String, parent : GtkWindow ) is extern import String.to_cstring `{
- return gtk_color_chooser_dialog_new( String_to_cstring( title ), parent );
+ new (title: String, parent: GtkWindow) import String.to_cstring `{
+ return gtk_color_chooser_dialog_new(String_to_cstring(title), parent);
`}
- #fun color_selection : is extern `{
- # return gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( recv ) );
- #`}
+ # fun color_selection: `{
+ # return gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(recv));
+ # `}
- #fun color : Float is extern `{
- # return gtk_color_selection_dialog_get_color_selection( GTK_COLOR_SELECTION_DIALOG( recv ) );
- #`}
+ # fun color: Float `{
+ # return gtk_color_selection_dialog_get_color_selection(GTK_COLOR_SELECTION_DIALOG(recv));
+ # `}
end
-#Retrieve an integer or floating-point number from the user
-#@https://developer.gnome.org/gtk3/3.2/GtkSpinButton.html
+# Retrieve an integer or floating-point number from the user
+# See: https://developer.gnome.org/gtk3/3.2/GtkSpinButton.html
extern class GtkSpinButton `{GtkSpinButton *`}
super GtkEntry
- new ( adjustment : GtkAdjustment, climb_rate : Float, digits : Int )is extern `{
- return (GtkSpinButton *)gtk_spin_button_new( adjustment, climb_rate, digits );
+ new (adjustment: GtkAdjustment, climb_rate: Float, digits: Int)is extern `{
+ return (GtkSpinButton *)gtk_spin_button_new(adjustment, climb_rate, digits);
`}
- new with_range( min : Float, max : Float, step : Float )is extern `{
- return (GtkSpinButton *)gtk_spin_button_new_with_range( min, max, step );
+ new with_range(min: Float, max: Float, step: Float)is extern `{
+ return (GtkSpinButton *)gtk_spin_button_new_with_range(min, max, step);
`}
- fun configure ( adjustment : GtkAdjustment, climb_rate : Float, digits : Int ) is extern `{
- gtk_spin_button_configure( recv, adjustment, climb_rate, digits );
+ fun configure (adjustment: GtkAdjustment, climb_rate: Float, digits: Int) `{
+ gtk_spin_button_configure(recv, adjustment, climb_rate, digits);
`}
- fun adjustment : GtkAdjustment is extern `{
- return gtk_spin_button_get_adjustment( recv );
+ fun adjustment: GtkAdjustment `{
+ return gtk_spin_button_get_adjustment(recv);
`}
- fun adjustment=( value : GtkAdjustment ) is extern `{
- gtk_spin_button_set_adjustment( recv, value );
+ fun adjustment=(value: GtkAdjustment) `{
+ gtk_spin_button_set_adjustment(recv, value);
`}
- fun digits : Int is extern `{
- return gtk_spin_button_get_digits( recv );
+ fun digits: Int `{
+ return gtk_spin_button_get_digits(recv);
`}
- fun digits=( nb_digits : Int ) is extern `{
- gtk_spin_button_set_digits( recv, nb_digits );
+ fun digits=(nb_digits: Int) `{
+ gtk_spin_button_set_digits(recv, nb_digits);
`}
- fun value : Float is extern `{
- return gtk_spin_button_get_value( recv );
+ fun value: Float `{
+ return gtk_spin_button_get_value(recv);
`}
- fun val=( val : Float ) is extern `{
- gtk_spin_button_set_value( recv, val );
+ fun val=(val: Float) `{
+ gtk_spin_button_set_value(recv, val);
`}
- fun spin( direction : GtkSpinType, increment : Float ) is extern`{
- gtk_spin_button_spin( recv, direction, increment );
+ fun spin(direction: GtkSpinType, increment: Float)`{
+ gtk_spin_button_spin(recv, direction, increment);
`}
end
-#enum GtkSpinType
-#The values of the GtkSpinType enumeration are used to specify the change to make in gtk_spin_button_spin().
-#@https://developer.gnome.org/gtk3/stable/GtkSpinButton.html#GtkSpinType
+# enum GtkSpinType
+# The values of the GtkSpinType enumeration are used to specify the change to make in gtk_spin_button_spin().
+# See: https://developer.gnome.org/gtk3/stable/GtkSpinButton.html#GtkSpinType
extern class GtkSpinType `{GtkSpinType`}
- #Increment by the adjustments step increment.
+ # Increment by the adjustments step increment.
new step_forward `{ return GTK_SPIN_STEP_FORWARD; `}
- #Decrement by the adjustments step increment.
+ # Decrement by the adjustments step increment.
new step_backward `{ return GTK_SPIN_STEP_BACKWARD; `}
- #Increment by the adjustments page increment.
+ # Increment by the adjustments page increment.
new page_forward `{ return GTK_SPIN_PAGE_FORWARD; `}
- #Decrement by the adjustments page increment.
+ # Decrement by the adjustments page increment.
new page_backward `{ return GTK_SPIN_PAGE_BACKWARD; `}
- #Go to the adjustments lower bound.
+ # Go to the adjustments lower bound.
new lower_bound `{ return GTK_SPIN_HOME; `}
- #Go to the adjustments upper bound.
+ # Go to the adjustments upper bound.
new upper_bound `{ return GTK_SPIN_END; `}
- #Change by a specified amount.
+ # Change by a specified amount.
new user_defined `{ return GTK_SPIN_USER_DEFINED; `}
end
-#A widget to unlock or lock privileged operations
-#@https://developer.gnome.org/gtk3/stable/GtkLockButton.html
+# A widget to unlock or lock privileged operations
+# See: https://developer.gnome.org/gtk3/stable/GtkLockButton.html
extern class GtkLockButton
super GtkButton
end
-#A button to launch a color selection dialog
-#@https://developer.gnome.org/gtk3/stable/GtkColorButton.html
+# A button to launch a color selection dialog
+# See: https://developer.gnome.org/gtk3/stable/GtkColorButton.html
extern class GtkColorButton `{GtkColorButton *`}
super GtkButton
- new is extern `{
- return (GtkColorButton *)gtk_color_button_new( );
- `}
-
- fun color=( col : GdkColor ) is extern `{
-
- /* deprecated
- GdkColor *c = malloc(sizeof(GdkColor));
- c->pixel = 50;
- c->red = 50;
- c->green = 50;
- c->blue = 50;
-
- gtk_color_button_set_color( (GtkColorButton*)recv, c );*/
+ new `{
+ return (GtkColorButton *)gtk_color_button_new();
`}
end
# See the License for the specific language governing permissions and
# limitations under the License.
-module v3_4 is pkgconfig("gtk+-3.0")
+module v3_4 is pkgconfig "gtk+-3.0"
import gtk_widgets_ext
import gtk_dialogs
# limitations under the License.
# GTK+ services added at version 3.6
-module v3_6 is pkgconfig("gtk+-3.0")
+module v3_6 is pkgconfig "gtk+-3.0"
import v3_4
-#An entry which shows a search icon
-#@https://developer.gnome.org/gtk3/stable/GtkSearchEntry.html
+# An entry which shows a search icon
+# See: https://developer.gnome.org/gtk3/stable/GtkSearchEntry.html
extern class GtkSearchEntry `{GtkSearchEntry *`}
super GtkEntry
- new is extern `{
- return (GtkSearchEntry *)gtk_search_entry_new( );
+ new `{
+ return (GtkSearchEntry *)gtk_search_entry_new();
`}
end
redef class GtkWidget
# Get the visibility of the widget, check if it's parents are visible too
- fun visible: Bool is extern `{
+ fun visible: Bool `{
return gtk_widget_is_visible(recv);
`}
end
# Pops the current local reference frame and return a valid reference to self
#
- # Similiar to `JavaVM::pop_local_frame` but returns a value.
+ # Similar to `JavaVM::pop_local_frame` but returns a value.
fun pop_from_local_frame: SELF
do
var jni_env = sys.jni_env
#
# SEE: `to_json`
fun append_json(buffer: Buffer) do buffer.append(to_json)
+
+ # Pretty print JSON string.
+ #
+ # ~~~
+ # var obj = new JsonObject
+ # obj["foo"] = 1
+ # obj["bar"] = true
+ # var arr = new JsonArray
+ # arr.add 2
+ # arr.add false
+ # arr.add "baz"
+ # obj["baz"] = arr
+ # var res = obj.to_pretty_json
+ # var exp = """{
+ # "foo": 1,
+ # "bar": true,
+ # "baz": [2, false, "baz"]
+ # }\n"""
+ # assert res == exp
+ # ~~~
+ fun to_pretty_json: String do
+ var res = new FlatBuffer
+ pretty_json_visit(res, 0)
+ res.add '\n'
+ return res.write_to_string
+ end
+
+ private fun pretty_json_visit(buffer: FlatBuffer, indent: Int) is abstract
end
redef class Text
# Encode `self` in JSON.
#
- # assert "\t\"http://example.com\"\r\n\0\\".to_json ==
- # "\"\\t\\\"http:\\/\\/example.com\\\"\\r\\n\\u0000\\\\\""
+ # ~~~
+ # assert "\t\"http://example.com\"\r\n\0\\".to_json ==
+ # "\"\\t\\\"http:\\/\\/example.com\\\"\\r\\n\\u0000\\\\\""
+ # ~~~
redef fun to_json do return to_json_by_append
# Parse `self` as JSON.
# assert obj.to_json == "\{\"baz\":null\}"
redef fun to_json do return to_json_by_append
+ redef fun pretty_json_visit(buffer, indent) do
+ buffer.append "\{\n"
+ indent += 1
+ var i = 0
+ for k, v in self do
+ buffer.append "\t" * indent
+ buffer.append "\"{k}\": "
+ if v isa JsonObject or v isa JsonArray then
+ v.pretty_json_visit(buffer, indent)
+ else
+ buffer.append v.to_json
+ end
+ if i < length - 1 then
+ buffer.append ","
+ end
+ buffer.append "\n"
+ i += 1
+ end
+ indent -= 1
+ buffer.append "\t" * indent
+ buffer.append "\}"
+ end
+
private fun append_json_entry(iterator: MapIterator[String, nullable Jsonable],
buffer: Buffer) do
buffer.append iterator.key.to_json
# assert arr.to_json =="[]"
redef fun to_json do return to_json_by_append
+ redef fun pretty_json_visit(buffer, indent) do
+ buffer.append "\["
+ var i = 0
+ for v in self do
+ if v isa JsonObject or v isa JsonArray then
+ v.pretty_json_visit(buffer, indent)
+ else
+ buffer.append v.to_json
+ end
+ if i < length - 1 then buffer.append ", "
+ i += 1
+ end
+ buffer.append "\]"
+ end
+
private fun append_json_entry(iterator: Iterator[nullable Jsonable],
buffer: Buffer) do
buffer.append_json_of(iterator.item)
# Get the JSON representation of `self`.
#
- # var err = new JsonParseError("foo", new Position(1, 2, 3, 4, 5, 6))
- # assert err.to_json == "\{\"error\":\"JsonParseError\"," +
- # "\"position\":\{" +
- # "\"pos_start\":1,\"pos_end\":2," +
- # "\"line_start\":3,\"line_end\":4," +
- # "\"col_start\":5,\"col_end\":6" +
- # "\},\"message\":\"foo\"\}"
+ # ~~~
+ # var err = new JsonParseError("foo", new Position(1, 2, 3, 4, 5, 6))
+ # assert err.to_json == "\{\"error\":\"JsonParseError\"," +
+ # "\"position\":\{" +
+ # "\"pos_start\":1,\"pos_end\":2," +
+ # "\"line_start\":3,\"line_end\":4," +
+ # "\"col_start\":5,\"col_end\":6" +
+ # "\},\"message\":\"foo\"\}"
+ # ~~~
redef fun to_json do
return "\{\"error\":\"JsonParseError\"," +
"\"position\":{position.to_json}," +
# Get the JSON representation of `self`.
#
- # var pos = new Position(1, 2, 3, 4, 5, 6)
- # assert pos.to_json == "\{" +
- # "\"pos_start\":1,\"pos_end\":2," +
- # "\"line_start\":3,\"line_end\":4," +
- # "\"col_start\":5,\"col_end\":6" +
- # "\}"
+ # ~~~
+ # var pos = new Position(1, 2, 3, 4, 5, 6)
+ # assert pos.to_json == "\{" +
+ # "\"pos_start\":1,\"pos_end\":2," +
+ # "\"line_start\":3,\"line_end\":4," +
+ # "\"col_start\":5,\"col_end\":6" +
+ # "\}"
+ # ~~~
redef fun to_json do
return "\{\"pos_start\":{pos_start},\"pos_end\":{pos_end}," +
"\"line_start\":{line_start},\"line_end\":{line_end}," +
# See the License for the specific language governing permissions and
# limitations under the License.
-module linux_data_store
+# `app::data_store` implementation on GNU/Linux
+module data_store
import app::data_store
private import xdg_basedir
module linux
import app
-private import linux_data_store
+private import data_store
#
# Markdown allows link refs to be defined over two lines:
#
- # [id]: http://example.com/longish/path/to/resource/here
+ # [id]: http://example.com/longish/path/to/resource/here
# "Optional Title Here"
#
private var last_link_ref: nullable LinkRef = null
comment = lr.title
end
else
- var tid = name.write_to_string.replace("\n", " ").to_lower
+ var tid = name.write_to_string.replace("\n", " ").to_lower
if v.processor.link_refs.has_key(tid) then
var lr = v.processor.link_refs[tid]
link = lr.link
# In order to reproduce executions, the behavior of the application must be deterministic
# for a given sequence of inputs.
# The main source of differences in executions is caused by the `rand` function,
-# Set the environment variable `MNIT_SRAND` to a value to force srand to be initialized with this value.
+# Set the environment variable `NIT_SRAND` to a value to force srand to be initialized with this value.
#
# The input event file is made of event descriptions, one event by line.
#
redef fun setup
do
- var env = "MNIT_SRAND".environ
- if env != "" then
- srand_from(env.to_i)
- else
- srand_from(0)
- end
-
var input = "MNIT_READ_INPUT".environ
if input != "" then
injected_input_stream = new FileReader.open(input)
GLenum mnit_opengles_error_code;
- struct mnit_opengles_Texture *mnit_opengles_load_image( const uint_least32_t *pixels, int width, int height, int has_alpha );
+ struct mnit_opengles_Texture *mnit_opengles_load_image(
+ const uint_least32_t *pixels, int width, int height,
+ int width_pow2, int height_pow2, int has_alpha);
`}
in "C" `{
- #define LOGW(...) ((void)fprintf(stderr, "# warn: %s (%i)\n", __VA_ARGS__))
- #ifdef DEBUG
- #define LOGI(...) ((void)fprintf(stderr, "# info: %s (%i)\n", __VA_ARGS__))
- #else
- #define LOGI(...) (void)0
- #endif
-
extern NativeWindowType mnit_window;
extern EGLNativeDisplayType mnit_native_display;
{1.0f, 0.0f}
};
- struct mnit_opengles_Texture *mnit_opengles_load_image( const uint_least32_t *pixels, int width, int height, int has_alpha )
+ struct mnit_opengles_Texture *mnit_opengles_load_image(
+ const uint_least32_t *pixels, int width, int height,
+ int width_pow2, int height_pow2, int has_alpha)
{
struct mnit_opengles_Texture *image = malloc(sizeof(struct mnit_opengles_Texture));
int format = has_alpha? GL_RGBA: GL_RGB;
image->src_xo = 0;
image->src_yo = 0;
- image->src_xi = 1.0;
- image->src_yi = 1.0;
+ image->src_xi = ((float)width)/width_pow2;
+ image->src_yi = ((float)height)/height_pow2;
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error loading image after malloc", mnit_opengles_error_code);
+ PRINT_ERROR("error loading image after malloc: %i", mnit_opengles_error_code);
}
glGenTextures(1, &image->texture);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error loading image after glGenTextures", mnit_opengles_error_code);
+ PRINT_ERROR("error loading image after glGenTextures: %i", mnit_opengles_error_code);
}
glBindTexture(GL_TEXTURE_2D, image->texture);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error loading image glBindTexture", mnit_opengles_error_code);
+ PRINT_ERROR("error loading image glBindTexture: %i", mnit_opengles_error_code);
}
- glTexImage2D( GL_TEXTURE_2D, 0, format, width, height,
+ glTexImage2D( GL_TEXTURE_2D, 0, format, width_pow2, height_pow2,
0, format, GL_UNSIGNED_BYTE, (GLvoid*)pixels);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error loading image after glTexImage2D", mnit_opengles_error_code);
+ PRINT_ERROR("error loading image after glTexImage2D: %i", mnit_opengles_error_code);
}
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error loading image after gtTexParameter", mnit_opengles_error_code);
+ PRINT_ERROR("error loading image after gtTexParameter: %i", mnit_opengles_error_code);
}
return image;
EGLDisplay display = eglGetDisplay(mnit_native_display);
if ( display == EGL_NO_DISPLAY) {
- LOGW("Unable to eglGetDisplay", 0);
+ PRINT_ERROR("Unable to eglGetDisplay");
return -1;
}
if ( eglInitialize(display, 0, 0) == EGL_FALSE) {
- LOGW("Unable to eglInitialize", 0);
+ PRINT_ERROR("Unable to eglInitialize");
return -1;
}
if ( eglChooseConfig(display, attribs, &config, 1, &numConfigs) == EGL_FALSE) {
- LOGW("Unable to eglChooseConfig", 0);
+ PRINT_ERROR("Unable to eglChooseConfig");
return -1;
}
if ( numConfigs == 0 ) {
- LOGW("No configs available for egl", 0);
+ PRINT_ERROR("No configs available for egl");
return -1;
}
if ( eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format) == EGL_FALSE) {
- LOGW("Unable to eglGetConfigAttrib", 0);
+ PRINT_ERROR("Unable to eglGetConfigAttrib");
return -1;
}
context = eglCreateContext(display, config, NULL, NULL);
if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) {
- LOGW("Unable to eglMakeCurrent", 0);
+ PRINT_ERROR("Unable to eglMakeCurrent");
return -1;
}
mnit_width = w;
mnit_height = h;
- LOGI("surface", (int)surface);
- LOGI("display", (int)display);
- LOGI("width", w);
- LOGI("height", h);
-
glViewport(0, 0, mnit_width, mnit_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glDisable(GL_TEXTURE_2D);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error drawing", mnit_opengles_error_code);
+ PRINT_ERROR("error drawing: %i", mnit_opengles_error_code);
}
`}
glDisable(GL_TEXTURE_2D);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error drawing", mnit_opengles_error_code);
+ PRINT_ERROR("error drawing: %i", mnit_opengles_error_code);
}
`}
glDisable(GL_TEXTURE_2D);
if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
- LOGW("error drawing", mnit_opengles_error_code);
+ PRINT_ERROR("error drawing: %i", mnit_opengles_error_code);
}
`}
image->scale = recv->scale;
image->blended = recv->blended;
- image->src_xo = ((float)x)/recv->width;
- image->src_yo = ((float)y)/recv->height;
- image->src_xi = ((float)x+w)/recv->width;
- image->src_yi = ((float)y+h)/recv->height;
+ float r_dx = recv->src_xi - recv->src_xo;
+ float r_dy = recv->src_yi - recv->src_yo;
+ image->src_xo = recv->src_xo + ((float)x)/recv->width*r_dx;
+ image->src_yo = recv->src_yo + ((float)y)/recv->height*r_dy;
+ image->src_xi = recv->src_xo + ((float)x+w)/recv->width*r_dx;
+ image->src_yi = recv->src_yo + ((float)y+h)/recv->height*r_dy;
return Opengles1Image_as_Image( image );
`}
var a = load_asset_from_apk(path)
if a != null then
if path.file_extension == "png" then
- var png = new Opengles1Image.from_android_asset(a)
+ var png = new Opengles1Image.from_android_asset(a)
a.close
return png
else if path.file_extension == "txt" then
redef class Opengles1Image
# Read a png from a zipped stream
- new from_android_asset(asset: AndroidAsset) is extern `{
+ new from_android_asset(asset: AndroidAsset) import Int.next_pow `{
struct mnit_opengles_Texture *recv = NULL;
png_structp png_ptr = NULL;
unsigned char *pixels = NULL;
unsigned int i;
+ png_uint_32 width_pow2, height_pow2;
+ unsigned int row_bytes_pow2;
+
unsigned char sig[8];
int sig_read = AAsset_read(asset, sig, 8);
if (png_sig_cmp(sig, 0, sig_read)) {
LOGW("invalide png signature");
return NULL;
}
-
+
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
if (png_ptr == NULL) {
LOGW("png_create_read_struct failed");
png_read_update_info(png_ptr, info_ptr);
}
- LOGW("w: %i, h: %i", width, height);
+ width_pow2 = Int_next_pow(width, 2);
+ height_pow2 = Int_next_pow(height, 2);
+
+ LOGW("Loading image of w: %i, h: %i, w2: %d, h2: %d",
+ width, height, width_pow2, height_pow2);
row_bytes = png_get_rowbytes(png_ptr, info_ptr);
- pixels = malloc(row_bytes * height);
- row_pointers = (png_bytep*) malloc(sizeof(png_bytep) * height);
+ row_bytes_pow2 = row_bytes * width_pow2 / width;
+ pixels = malloc(row_bytes_pow2 * height_pow2);
+ row_pointers = (png_bytep*)malloc(sizeof(png_bytep) * height_pow2);
for (i=0; i<height; i++)
row_pointers[i] = (png_byte*) malloc(row_bytes);
png_read_image(png_ptr, row_pointers);
for (i = 0; i < height; i++)
- memcpy(pixels + (row_bytes*i),
- row_pointers[i], row_bytes);
+ memcpy(pixels + (row_bytes_pow2*i), row_pointers[i], row_bytes);
+
+ recv = mnit_opengles_load_image((const uint_least32_t *)pixels,
+ width, height, width_pow2, height_pow2, has_alpha);
- recv = mnit_opengles_load_image((const uint_least32_t *)pixels, width, height, has_alpha);
- LOGW("OK");
+ // Calculate the size of the client-side memory allocated and freed
+ float size = ((float)row_bytes_pow2) * height_pow2/1024.0/1024.0;
+ static float total_size = 0;
+ total_size += size;
+ LOGI("Loaded OK %fmb out of %fmb", size, total_size);
close_png_ptr:
if (info_ptr != NULL)
return recv;
`}
end
+
+redef universal Int
+ # The first power of `exp` greater or equal to `self`
+ private fun next_pow(exp: Int): Int
+ do
+ var p = 0
+ while p < self do p = p*exp
+ return p
+ end
+end
redef extern class Opengles1Image
new from_sdl_image( sdl_image: SDLImage ) is extern `{
- return mnit_opengles_load_image( sdl_image->pixels, sdl_image->w, sdl_image->h, sdl_image->format->Amask );
+ return mnit_opengles_load_image( sdl_image->pixels,
+ sdl_image->w, sdl_image->h,
+ sdl_image->w, sdl_image->h, sdl_image->format->Amask );
`}
# using sdl
fprintf(stderr, "SDL failed to load image <%s>: %s\n", String_to_cstring(path), IMG_GetError());
return NULL;
} else {
- opengles_image = mnit_opengles_load_image( sdl_image->pixels, sdl_image->w, sdl_image->h, sdl_image->format->Amask );
+ opengles_image = mnit_opengles_load_image( sdl_image->pixels,
+ sdl_image->w, sdl_image->h,
+ sdl_image->w, sdl_image->h, sdl_image->format->Amask );
SDL_FreeSurface(sdl_image);
return opengles_image;
}
--- /dev/null
+# 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.
+
+# MongoDB Nit Driver.
+#
+# This is actually a wrapper around the [MongoDB C Driver](http://api.mongodb.org/c/1.1.4/index.html).
+#
+# Usage:
+#
+# ~~~
+# # Opens the connexion with the Mongo server.
+# var client = new MongoClient("mongodb://localhost:27017/")
+#
+# # Retrieve a collection.
+# var col = client.database("test").collection("test")
+#
+# # Insert a document in the collection.
+# var doc = new JsonObject
+# doc["foo"] = 10
+# doc["bar"] = "bar"
+# doc["baz"] = new JsonArray
+# assert col.insert(doc)
+#
+# # Retrieve a document from the collection.
+# var query = new JsonObject
+# query["foo"] = 10
+# var res = col.find(query)
+# assert res["bar"] == "bar"
+# ~~~
+#
+# TODO Get last Object_ID
+module mongodb
+
+import json
+private import native_mongodb
+
+in "C header" `{
+ #include <mongoc.h>
+`}
+
+# Everything inside MongoDB is manipulated as BSON Objects.
+#
+# See:
+# * [Binary JSON spec](http://bsonspec.org/)
+# * [Libbson](http://api.mongodb.org/libbson/1.1.4/)#
+private class BSON
+ super Finalizable
+
+ # Native instance pointer.
+ var native: NativeBSON
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ var is_alive = true
+
+ # Returns a new BSON object initialized from the content of `json`.
+ #
+ # ~~~
+ # intrude import mongodb
+ # var obj = new JsonObject
+ # obj["age"] = 10
+ # obj["name"] = "Rick"
+ # obj["ELS"] = new JsonArray
+ # var bson = new BSON.from_json(obj)
+ # assert bson.to_s == """{ "age" : 10, "name" : "Rick", "ELS" : [ ] }"""
+ # ~~~
+ init from_json(json: JsonObject) do
+ init(new NativeBSON.from_json_string(json.to_json.to_cstring))
+ end
+
+ # Returns a new BSON object parsed from `json_string`.
+ #
+ # If `json_string` is not a valid JSON string, this initializer returns NULL.
+ #
+ # ~~~
+ # intrude import mongodb
+ # var str = """{ "age" : 10, "name" : "Rick", "ELS" : [ ] }"""
+ # var bson = new BSON.from_json_string(str)
+ # assert bson.to_s == str
+ # ~~~
+ init from_json_string(json_string: String) do
+ init(new NativeBSON.from_json_string(json_string.to_cstring))
+ end
+
+ redef fun to_s do
+ assert is_alive
+ var ns = native.to_native_string
+ var res = ns.to_s_with_copy
+ ns.free # manual free of gc allocated NativeString
+ return res
+ end
+
+ # Returns a new JsonObject from `self`.
+ #
+ # ~~~
+ # intrude import mongodb
+ # var str = """{ "age" : 10, "name" : "Rick", "ELS" : [ ] }"""
+ # var bson = new BSON.from_json_string(str)
+ # var json = bson.to_json
+ # assert json["age"] == 10
+ # assert json["name"] == "Rick"
+ # assert json["ELS"].as(JsonArray).is_empty
+ # ~~~
+ fun to_json: JsonObject do
+ assert is_alive
+ return to_s.parse_json.as(JsonObject)
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
+
+redef class JsonObject
+ # Inits `self` from a BSON object.
+ private init from_bson(bson: BSON) do recover_with(bson.to_json)
+
+ # Returns a new BSON object from `self`.
+ private fun to_bson: BSON do return new BSON.from_json(self)
+end
+
+# An error returned by the mongoc client.
+#
+# Within the client, if a method returns `false` or `null` it's more likely that
+# an error occured during the execution.
+#
+# See `MongoClient::last_error`.
+class MongoError
+
+ private var native: BSONError
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ # Logical domain within a library that created the error.
+ fun domain: Int do
+ assert is_alive
+ return native.domain
+ end
+
+ # Domain specific error code.
+ fun code: Int do
+ assert is_alive
+ return native.code
+ end
+
+ # Human readable error message.
+ fun message: String do
+ assert is_alive
+ var ns = native.message
+ var res = ns.to_s_with_copy
+ ns.free
+ return res
+ end
+
+ redef fun to_s do return "{message} (code: {code})"
+end
+
+# The MongoClient is used to connect to the mongo server and send queries.
+#
+# Usage:
+#
+# ~~~
+# var uri = "mongodb://localhost:27017/"
+# var client = new MongoClient(uri)
+# assert client.server_uri == uri
+# ~~~
+class MongoClient
+ super Finalizable
+
+ # Server URI.
+ var server_uri: String
+
+ private var native: NativeMongoClient is noinit
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ init do
+ native = new NativeMongoClient(server_uri.to_cstring)
+ end
+
+ # Gets server data.
+ #
+ # Returns `null` if an error occured. See `last_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # assert client.server_status["process"] == "mongod"
+ # ~~~
+ fun server_status: nullable JsonObject do
+ assert is_alive
+ var nbson = native.server_status
+ if nbson == null then return null
+ var bson = new BSON(nbson)
+ var res = new JsonObject.from_bson(bson)
+ return res
+ end
+
+ # Lists available database names.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # db.collection("test").insert(new JsonObject)
+ # assert client.database_names.has("test")
+ # ~~~
+ fun database_names: Array[String] do
+ assert is_alive
+ var res = new Array[String]
+ var nas = native.database_names
+ var i = 0
+ var name = nas[i]
+ while not name.address_is_null do
+ res.add name.to_s_with_copy
+ name.free
+ i += 1
+ name = nas[i]
+ end
+ return res
+ end
+
+ # Loads or creates a database from its `name`.
+ #
+ # Database are automatically created on the MongoDB server upon insertion of
+ # the first document into a collection.
+ # There is no need to create a database manually.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # assert client.database("test").name == "test"
+ # ~~~
+ fun database(name: String): MongoDb do
+ assert is_alive
+ return new MongoDb(self, name)
+ end
+
+ # Close the connexion and destroy the instance.
+ #
+ # The reference should not be used beyond this point!
+ fun close do
+ assert is_alive
+ finalize
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+
+ # Last error raised by mongoc.
+ fun last_error: nullable MongoError do
+ var last_error = sys.last_mongoc_error
+ if last_error == null then return null
+ return new MongoError(last_error)
+ end
+end
+
+# A MongoDb database.
+#
+# Database are automatically created on the MongoDB server upon insertion of the
+# first document into a collection.
+# There is no need to create a database manually.
+class MongoDb
+ super Finalizable
+
+ # `MongoClient` used to load this database.
+ var client: MongoClient
+
+ # The database name.
+ var name: String
+
+ private var native: NativeMongoDb is noinit
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ init do
+ native = new NativeMongoDb(client.native, name.to_cstring)
+ end
+
+ # Lists available collection names.
+ #
+ # Returns `null` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # db.collection("test").insert(new JsonObject)
+ # assert db.collection_names.has("test")
+ # ~~~
+ fun collection_names: Array[String] do
+ assert is_alive
+ var res = new Array[String]
+ var nas = native.collection_names
+ var i = 0
+ var name = nas[i]
+ while not name.address_is_null do
+ res.add name.to_s_with_copy
+ name.free
+ i += 1
+ name = nas[i]
+ end
+ return res
+ end
+
+ # Loads or creates a collection by its `name`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # var col = db.collection("test")
+ # assert col.name == "test"
+ # ~~~
+ fun collection(name: String): MongoCollection do
+ assert is_alive
+ return new MongoCollection(self, name)
+ end
+
+ # Checks if a collection named `name` exists.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var db = client.database("test")
+ # assert not db.has_collection("qwerty")
+ # ~~~
+ fun has_collection(name: String): Bool do
+ assert is_alive
+ # TODO handle error
+ return native.has_collection(name.to_cstring)
+ end
+
+ # Drop `self`, returns false if an error occured.
+ fun drop: Bool do
+ assert is_alive
+ return native.drop
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
+
+# A Mongo collection.
+#
+# Collections are automatically created on the MongoDB server upon insertion of
+# the first document.
+# There is no need to create a database manually.
+class MongoCollection
+ super Finalizable
+
+ # Database that collection belongs to.
+ var database: MongoDb
+
+ # Name of this collection.
+ var name: String
+
+ private var native: NativeMongoCollection is noinit
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ # Loads a collection.
+ #
+ # Call `MongoDb::collection` instead.
+ init do
+ native = new NativeMongoCollection(
+ database.client.native,
+ database.name.to_cstring,
+ name.to_cstring)
+ end
+
+ # Inserts a new document in the collection.
+ #
+ # If no _id element is found in document, then a new one be generated locally
+ # and added to the document.
+ #
+ # Returns `false` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var doc = new JsonObject
+ # doc["foo"] = 10
+ # doc["bar"] = "bar"
+ # doc["baz"] = new JsonArray
+ # assert col.insert(doc)
+ # ~~~
+ fun insert(doc: JsonObject): Bool do
+ assert is_alive
+ return native.insert(doc.to_bson.native)
+ end
+
+ # Inserts multiple documents in the collection.
+ #
+ # See `insert`.
+ fun insert_all(docs: Collection[JsonObject]): Bool do
+ assert is_alive
+ var res = true
+ for doc in docs do res = insert(doc) and res
+ return res
+ end
+
+ # Saves a new document in the collection.
+ #
+ # If the document has an `_id` field it will be updated.
+ # Otherwise it will be inserted.
+ #
+ # Returns `false` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var doc = new JsonObject
+ # doc["foo"] = 10
+ # doc["bar"] = "bar"
+ # doc["baz"] = new JsonArray
+ # assert col.save(doc) # will be inserted
+ # ~~~
+ fun save(doc: JsonObject): Bool do
+ assert is_alive
+ return native.save(doc.to_bson.native)
+ end
+
+ # Removes the first document that matches `selector`.
+ #
+ # Returns `false` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var sel = new JsonObject
+ # sel["foo"] = 10
+ # assert col.remove(sel)
+ # ~~~
+ fun remove(selector: JsonObject): Bool do
+ assert is_alive
+ return native.remove(selector.to_bson.native)
+ end
+
+ # Removes all the document that match `selector`.
+ #
+ # See `remove`.
+ fun remove_all(selector: JsonObject): Bool do
+ assert is_alive
+ return native.remove_all(selector.to_bson.native)
+ end
+
+ # Updates a document already existing in the collection.
+ #
+ # No upsert is done, see `save` instead.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var sel = new JsonObject
+ # sel["foo"] = 10
+ # var upd = new JsonObject
+ # upd["bar"] = "BAR"
+ # assert col.update(sel, upd)
+ # ~~~
+ fun update(selector: JsonObject, update: JsonObject): Bool do
+ assert is_alive
+ return native.update(
+ selector.to_bson.native,
+ update.to_bson.native)
+ end
+
+ # Updates all documents matching the `selector`.
+ #
+ # See `update`.
+ fun update_all(selector: JsonObject, update: JsonObject): Bool do
+ return native.update_all(
+ selector.to_bson.native,
+ update.to_bson.native)
+ end
+
+ # Counts the document matching `query`.
+ #
+ # Returns `-1` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var query = new JsonObject
+ # query["foo"] = 10
+ # assert col.count(query) > 0
+ # ~~~
+ fun count(query: JsonObject): Int do
+ assert is_alive
+ return native.count(query.to_bson.native)
+ end
+
+ # Finds the first document that matches `query`.
+ #
+ # Returns `null` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var query = new JsonObject
+ # query["foo"] = 10
+ # var doc = col.find(query)
+ # print doc or else "nullllllllllllllllll"
+ # print doc.to_json
+ # assert doc["foo"] == 10
+ # ~~~
+ fun find(query: JsonObject): nullable JsonObject do
+ assert is_alive
+ var c = native.find(query.to_bson.native)
+ if c == null then return null
+ var cursor = new MongoCursor(c)
+ if cursor.is_ok then
+ cursor.next
+ return cursor.item
+ end
+ return null
+ end
+
+ # Finds all the documents matching the `query`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # var query = new JsonObject
+ # query["foo"] = 10
+ # assert col.find_all(query).length > 0
+ # ~~~
+ fun find_all(query: JsonObject): Array[JsonObject] do
+ assert is_alive
+ var res = new Array[JsonObject]
+ var c = native.find(query.to_bson.native)
+ if c == null then return res
+ var cursor = new MongoCursor(c)
+ for item in cursor do res.add item
+ return res
+ end
+
+ # Retrieves statistics about the collection.
+ #
+ # Returns `null` if an error occured. See `Sys::last_mongoc_error`.
+ #
+ # ~~~
+ # var client = new MongoClient("mongodb://localhost:27017/")
+ # var col = client.database("test").collection("test")
+ # assert col.stats["ns"] == "test.test"
+ # ~~~
+ fun stats: nullable JsonObject do
+ assert is_alive
+ var bson = native.stats
+ if bson == null then return null
+ return new JsonObject.from_bson(new BSON(bson))
+ end
+
+ # Drops `self`, returns false if an error occured.
+ fun drop: Bool do
+ assert is_alive
+ return native.drop
+ end
+
+ # Moves `self` to another `database`.
+ #
+ # The database will also be updated internally so it is safe to continue using
+ # this collection after the move.
+ # Additional operations will occur on moved collection.
+ fun move(database: MongoDb): Bool do
+ assert is_alive
+ self.database = database
+ return native.rename(database.name.to_cstring, name.to_cstring)
+ end
+
+ # Renames `self`.
+ #
+ # The name of the collection will also be updated internally so it is safe
+ # to continue using this collection after the rename.
+ # Additional operations will occur on renamed collection.
+ fun rename(name: String): Bool do
+ assert is_alive
+ self.name = name
+ return native.rename(database.name.to_cstring, name.to_cstring)
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
+
+# A MongoDB query cursor.
+#
+# It wraps up the wire protocol negotation required to initiate a query and
+# retreive an unknown number of documents.
+class MongoCursor
+ super Finalizable
+ super Iterator[JsonObject]
+
+ private var native: NativeMongoCursor
+
+ # Is the native instance valid?
+ #
+ # This is set to false if the `native` is destroyed.
+ private var is_alive = true
+
+ init do next
+
+ redef fun is_ok do
+ assert is_alive
+ return native.more
+ end
+
+ redef fun next do
+ assert is_alive
+ native.next
+ end
+
+ redef fun item do
+ assert is_alive
+ return new JsonObject.from_bson(new BSON(native.current))
+ end
+
+ redef fun finalize do
+ if is_alive then
+ native.destroy
+ is_alive = false
+ end
+ end
+end
--- /dev/null
+# 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.
+
+# Native wrapper for the MongoDB C Driver
+#
+# See [mongoc](http://api.mongodb.org/c/1.1.4/index.html).
+module native_mongodb is pkgconfig "libmongoc-1.0"
+
+import c
+
+in "C header" `{
+ #include <mongoc.h>
+`}
+
+# Wrapper for `bson_t`.
+#
+# All data manipulated by `mongoc` are BSON formated.
+#
+# The `bson_t` structure represents a BSON document.
+# This structure manages the underlying BSON encoded buffer.
+# For mutable documents, it can append new data to the document.
+#
+# See [`bson_t`](http://api.mongodb.org/libbson/current/bson_t.html).
+extern class NativeBSON `{ bson_t * `}
+
+ # Wrapper for `bson_new()`.
+ #
+ # The `bson_new()` function shall create a new `bson_t` structure on the heap.
+ # It should be freed with `bson_destroy()` when it is no longer in use.
+ new `{ return bson_new(); `}
+
+ # Wrapper for `bson_new_from_json()`.
+ #
+ # The `bson_new_from_json()` function allocates and initialize a new `bson_t`
+ # by parsing the JSON found in `data`.
+ # Only a single JSON object may exist in data or an error will be set and
+ # `NULL` returned.
+ new from_json_string(data: NativeString) import set_mongoc_error `{
+ bson_error_t error;
+ bson_t *bson;
+ bson = bson_new_from_json(data, -1, &error);
+ if(!bson) {
+ NativeBSON_set_mongoc_error(recv, &error);
+ return NULL;
+ }
+ return bson;
+ `}
+
+ # Wrapper for `bson_as_json()`.
+ #
+ # The `bson_as_json()` function shall encode bson as a JSON encoded UTF-8 string.
+ # The caller is responsible for freeing the resulting UTF-8 encoded string
+ # by calling `bson_free()` with the result.
+ fun to_native_string: NativeString `{ return bson_as_json(recv, NULL); `}
+
+ # Wrapper for `bson_destroy()`.
+ #
+ # The `bson_destroy()` function shall free an allocated `bson_t` structure.
+ # This function should always be called when you are done with a `bson_t`
+ # unless otherwise specified.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ bson_destroy(recv); `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `bson_error_t`.
+#
+# The `bson_error_t` structure is used to encapsulate information about an error.
+#
+# See [`bson_error_t`](http://api.mongodb.org/libbson/current/bson_error_t.html).
+extern class BSONError `{ bson_error_t * `}
+
+ # Wrapper for `error.domain`.
+ #
+ # The `error.domain` field contains the logical domain within a library that
+ # created the error.
+ fun domain: Int `{ return recv->domain; `}
+
+ # Wrapper for `error.code`.
+ #
+ # The `error.code` field contains the domain specific error code.
+ fun code: Int `{ return recv->code; `}
+
+ # Wrapper for `error.message`.
+ #
+ # The `error.message` field contains a human printable error message.
+ fun message: NativeString `{ return recv->message; `}
+end
+
+redef class Sys
+ # Last error raised by `monogdb::MongoClient`.
+ #
+ # See `MongoClient::last_error`.
+ var last_mongoc_error: nullable BSONError = null
+end
+
+# Wrapper for `char**`.
+#
+# Used to handle array of NativeString returned by MongoDB.
+redef class NativeCStringArray
+ # Frees `self`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ free(recv); `}
+end
+
+# Wrapper for `mongoc_client_t`.
+#
+# `mongoc_client_t` is an opaque type that provides access to a MongoDB node,
+# replica-set, or sharded-cluster.
+# It maintains management of underlying sockets and routing to individual nodes.
+#
+# See [`mongoc_client_t`](http://api.mongodb.org/c/current/mongoc_client_t.html).
+extern class NativeMongoClient `{ mongoc_client_t * `}
+
+ # Wrapper for `mongoc_client_new()`.
+ #
+ # Creates a new `mongoc_client_t` using the `uri` string provided.
+ new(uri: NativeString) `{
+ mongoc_init();
+ return mongoc_client_new(uri);
+ `}
+
+ # Wrapper for `mongoc_client_get_server_status()`.
+ #
+ # Queries the server for the current server status.
+ # Returns `null` if an error occured.
+ fun server_status: nullable NativeBSON import set_mongoc_error, NativeBSON.as nullable `{
+ bson_error_t error;
+ bson_t *reply = bson_new();
+ if(!mongoc_client_get_server_status(recv, NULL, reply, &error)){
+ NativeMongoClient_set_mongoc_error(recv, &error);
+ return null_NativeBSON();
+ }
+ return NativeBSON_as_nullable(reply);
+ `}
+
+ # Wrapper for `mongoc_client_get_database_names()`.
+ #
+ # This function queries the MongoDB server for a list of known databases.
+ # Returns `null` if an error occured.
+ fun database_names: nullable NativeCStringArray
+ import set_mongoc_error, NativeCStringArray, NativeCStringArray.as nullable `{
+ bson_error_t error;
+ char **strv;
+ if(strv = mongoc_client_get_database_names(recv, &error)) {
+ return NativeCStringArray_as_nullable(strv);
+ }
+ NativeMongoClient_set_mongoc_error(recv, &error);
+ return null_NativeCStringArray();
+ `}
+
+ # Wrapper for `mongoc_client_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{
+ mongoc_client_destroy(recv);
+ mongoc_cleanup();
+ `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `mongoc_database_t`.
+#
+# `mongoc_database_t` provides access to a MongoDB database.
+# This handle is useful for actions a particular database object.
+# It is not a container for `mongoc_collection_t` structures.
+#
+# See [`mongoc_database_t`](http://api.mongodb.org/c/current/mongoc_database_t.html).
+extern class NativeMongoDb `{ mongoc_database_t * `}
+
+ # Wrapper for `mongoc_client_get_database()`.
+ #
+ # Get a newly allocated `mongoc_database_t` for the database named name.
+ #
+ # Database are automatically created on the MongoDB server upon insertion of
+ # the first document into a collection.
+ # There is no need to create a database manually.
+ new(client: NativeMongoClient, db_name: NativeString) `{
+ return mongoc_client_get_database(client, db_name);
+ `}
+
+ # Wrapper for `mongoc_database_get_collection_names()`.
+ #
+ # Fetches a `NULL` terminated array of `NULL-byte` terminated `char*` strings
+ # containing the names of all of the collections in database.
+ fun collection_names: nullable NativeCStringArray
+ import set_mongoc_error, NativeCStringArray, NativeCStringArray.as nullable `{
+ bson_error_t error;
+ char **strv;
+ if(strv = mongoc_database_get_collection_names(recv, &error)) {
+ return NativeCStringArray_as_nullable(strv);
+ }
+ NativeMongoDb_set_mongoc_error(recv, &error);
+ return null_NativeCStringArray();
+ `}
+
+ # Wrapper for `mongoc_database_get_collection()`.
+ #
+ # Allocates a new `mongoc_collection_t` structure for the collection named
+ # `name` in database.
+ fun collection(name: NativeString): NativeMongoCollection `{
+ return mongoc_database_get_collection(recv, name);
+ `}
+
+ # Wrapper for `mongoc_database_has_collection()`.
+ #
+ # This function checks to see if a collection exists on the MongoDB server
+ # within database.
+ fun has_collection(name: NativeString): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_database_has_collection(recv, name, &error)) {
+ NativeMongoDb_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_database_drop()`.
+ #
+ # This function attempts to drop a database on the MongoDB server.
+ fun drop: Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_database_drop(recv, &error)) {
+ NativeMongoDb_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_database_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ mongoc_database_destroy(recv); `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `mongoc_collection_t`.
+#
+# `mongoc_collection_t` provides access to a MongoDB collection.
+# This handle is useful for actions for most CRUD operations,
+# I.e. insert, update, delete, find, etc.
+#
+# It is an error to call `mongoc_collection_destroy()` on a collection that has
+# operations pending.
+# It is required that you release `mongoc_cursor_t` structures before calling
+# `mongoc_collection_destroy()`.
+#
+# See [`mongoc_collection_t`](http://api.mongodb.org/c/current/mongoc_collection_t.html).
+extern class NativeMongoCollection `{ mongoc_collection_t * `}
+
+ # Wrapper for `mongoc_client_get_collection()`.
+ #
+ # Get a newly allocated `mongoc_collection_t` for the collection named
+ # `collection` in the database named `db`.
+ #
+ # Collections are automatically created on the MongoDB server upon insertion
+ # of the first document.
+ # There is no need to create a collection manually.
+ new(client: NativeMongoClient, db, collection: NativeString) `{
+ return mongoc_client_get_collection(client, db, collection);
+ `}
+
+ # Wrapper for `mongoc_collection_insert()`.
+ #
+ # This function shall insert `document` into the collection.
+ # If no `_id` element is found in document, then a `bson_oid_t` will be
+ # generated locally and added to the document.
+ #
+ # You can retrieve a generated `_id` from `mongoc_collection_get_last_error()`.
+ fun insert(doc: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_insert(recv, MONGOC_INSERT_NONE, doc, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_save()`.
+ #
+ # This function shall save a document into the collection.
+ # If the document has an `_id` field it will be updated.
+ # Otherwise it will be inserted.
+ fun save(document: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_save(recv, document, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_remove(MONGOC_REMOVE_SINGLE_REMOVE)`.
+ #
+ # This function shall remove the first document in the collection that matches
+ # `selector`.
+ # The bson selector is not validated, simply passed along as appropriate to the server.
+ fun remove(selector: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_remove(recv, MONGOC_REMOVE_SINGLE_REMOVE, selector, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_remove(MONGOC_REMOVE_NONE)`.
+ #
+ # This function shall remove documents in the collection that match `selector`.
+ fun remove_all(selector: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_remove(recv, MONGOC_REMOVE_NONE, selector, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_update(MONGOC_UPDATE_NONE)`.
+ #
+ # This function shall update the first document in the collection that
+ # matches `selector`.
+ fun update(selector, update: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_update(recv, MONGOC_UPDATE_NONE, selector, update, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_update(MONGOC_UPDATE_MULTI_UPDATE)`.
+ #
+ # This function shall update documents in the collection that match `selector`.
+ fun update_all(selector, update: NativeBSON): Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_update(recv, MONGOC_UPDATE_MULTI_UPDATE, selector, update, NULL, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_count()`.
+ #
+ # This function shall execute a count `query` on the underlying collection.
+ fun count(query: NativeBSON): Int import set_mongoc_error `{
+ bson_error_t error;
+ int64_t count = mongoc_collection_count(recv, MONGOC_QUERY_NONE, query, 0, 0, NULL, &error);
+ if(count < 0) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return -1;
+ }
+ return count;
+ `}
+
+ # Wrapper for `mongoc_collection_find()`.
+ #
+ # This function shall execute a `query` on the underlying collection.
+ #
+ # If no options are necessary, `query` can simply contain a query such as `{a:1}`.
+ #
+ # If you would like to specify options such as a sort order,
+ # the query must be placed inside of `{"$query": {}}`.
+ fun find(query: NativeBSON): nullable NativeMongoCursor import
+ NativeMongoCursor.as nullable, set_mongoc_error `{
+ bson_error_t error;
+ mongoc_cursor_t *cursor;
+ cursor = mongoc_collection_find(recv, MONGOC_QUERY_NONE, 0, 0, 0, query, NULL, NULL);
+
+ if (mongoc_cursor_error(cursor, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return null_NativeMongoCursor();
+ }
+
+ return NativeMongoCursor_as_nullable(cursor);
+ `}
+
+ # Wrapper for `mongoc_collection_stats()`.
+ #
+ # This function is a helper to retrieve statistics about the collection.
+ fun stats: nullable NativeBSON import set_mongoc_error, NativeBSON.as nullable `{
+ bson_error_t error;
+ bson_t *reply = bson_new();
+ if(!mongoc_collection_stats(recv, NULL, reply, &error)){
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return null_NativeBSON();
+ }
+ return NativeBSON_as_nullable(reply);
+ `}
+
+ # Wrapper for `mongoc_collection_drop()`.
+ #
+ # This function requests that the `collection` be dropped,
+ # including all indexes associated with the collection.
+ fun drop: Bool import set_mongoc_error `{
+ bson_error_t error;
+ if(!mongoc_collection_drop(recv, &error)) {
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_rename()`.
+ #
+ # This function is a helper to rename an existing collection on a MongoDB server.
+ # The name of the collection will also be updated internally so it is safe
+ # to continue using this collection after the rename.
+ # Additional operations will occur on renamed collection.
+ fun rename(new_database, new_name: NativeString): Bool `{
+ bson_error_t error;
+ if(!mongoc_collection_rename(recv, new_database, new_name, false, &error)){
+ NativeMongoCollection_set_mongoc_error(recv, &error);
+ return false;
+ }
+ return true;
+ `}
+
+ # Wrapper for `mongoc_collection_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ mongoc_collection_destroy(recv); `}
+
+ # Utility method to set `Sys.last_mongoc_error`.
+ fun set_mongoc_error(err: BSONError) do sys.last_mongoc_error = err
+end
+
+# Wrapper for `mongoc_cursor_t`.
+#
+# `mongoc_cursor_t` provides access to a MongoDB query cursor.
+# It wraps up the wire protocol negotation required to initiate a query and
+# retreive an unknown number of documents.
+#
+# Cursors are lazy, meaning that no network traffic occurs until the first call
+# to mongoc_cursor_next().
+#
+# At that point we can:
+# * Retreive more records with repeated calls to `mongoc_cursor_next()`.
+# * Test for more records with `mongoc_cursor_more()`.
+# * Retrieve the document under the cursor with `mongoc_cursor_current()`.
+#
+# See [`mongoc_cursor_t`](http://api.mongodb.org/c/current/mongoc_cursor_t.html).
+extern class NativeMongoCursor `{ mongoc_cursor_t* `}
+
+ # Wrapper for `mongoc_cursor_current()`.
+ #
+ # Fetches the cursors current document or NULL if there has been an error.
+ fun current: NativeBSON `{ return (bson_t*) mongoc_cursor_current(recv); `}
+
+ # Wrapper for `mongoc_cursor_next()`.
+ #
+ # This function shall iterate the underlying cursor, setting `current` to the next
+ # document.
+ #
+ # This function is a blocking function.
+ fun next: Bool `{
+ const bson_t *doc;
+ return mongoc_cursor_next(recv, &doc);
+ `}
+
+ # Wrapper for `mongoc_cursor_more()`.
+ #
+ # This function shall indicate if there is more data to be read from the cursor.
+ fun more: Bool `{ return mongoc_cursor_more(recv); `}
+
+ # Wrapper for `mongoc_cursor_destroy()`.
+ #
+ # This instance should not be used beyond this point!
+ fun destroy `{ mongoc_cursor_destroy(recv); `}
+end
Theses services are implemented using the POSIX threads.
You can also use the `is threaded` annotation on methods, which makes them run on their own thread.
-Methods with return value or self calls are not supported.
+Methods with self calls are not supported.
+
+A method or function annotated with `is threaded` has its return value changed during compilation.
+You will get a subclass of `Thread`, even if there wasn't a return value before. You can know if the threaded method is done with the `is_done` boolean from `Thread`.
+A call to the `join` method will block the execution until the threaded method is done, or immediatly return if it's already done.
+`join` will return an object typed with the orginial return type, or `null` if there wasn't.
## Known limitations:
* See: `man pthreads`
* See: `examples/concurrent_array_and_barrier.nit`
+* See: ̀ examples/threaded_example.nit`
print s
end
+# Parameterized `threaded` method with a return type
+fun baz(i : Int, j : Int): Int is threaded do
+ sys.nanosleep(10, 0)
+ return i + j
+end
+
+print "main"
foo
bar(10, "parameterized and threaded")
-print "main"
sys.nanosleep(5,0)
+var x = baz(2, 3)
+print "main, waiting for baz"
+var y = x.join
+print("baz result : " + y.to_s)
abstract class Thread
super Finalizable
+ # Type returned by `main`
+ type E : nullable Object
+
private var native: nullable NativePthread = null
+ # Is this thread finished ? True when main returned
+ var is_done = false
+
# Main method of this thread
#
# The returned valued is passed to the caller of `join`.
- fun main: nullable Object do return null
+ fun main: E do return null
- private fun main_intern: nullable Object
+ private fun main_intern: E
do
# Register thread local data
sys.self_thread_key.set self
-
- return main
+ var r = main
+ self.is_done = true
+ return r
end
# Start executing this thread
# `Sys::thread_exit`. Returns the object returned from the other thread.
#
# Stats the thread if now already done by a call to `start`.
- fun join: nullable Object
+ fun join: E
do
if native == null then start
var r = native.join
native = null
- return r
+ return r.as(E)
end
redef fun finalize
end
end
-# Instances of the Iterator class generates a series of elements, one at a time.
-# They are mainly used with collections.
+# Iterators generate a series of elements, one at a time.
+#
+# They are mainly used with collections and obtained from `Collection::iterator`.
interface Iterator[E]
# The current item.
# Require `is_ok`.
redef fun compare(a, b) do return a <=> b
end
+# This comparator uses the operator `<=>` to compare objects in a reverse order.
+#
+# See `default_reverse_comparator` for an easy-to-use general stateless reverse
+# default comparator.
+class DefaultReverseComparator
+ super Comparator
+
+ redef type COMPARED: Comparable
+
+ # Returns `b <=> a`.
+ redef fun compare(a, b) do return b <=> a
+end
+
# Easy-to-use general stateless default comparator that uses `<=>` to compare things.
fun default_comparator: DefaultComparator do return once new DefaultComparator
+
+# Easy-to-use general stateless default reverse comparator.
+#
+# Does the same as `default_comparator` but in reverse order.
+fun default_reverse_comparator: DefaultReverseComparator do
+ return once new DefaultReverseComparator
+end
private fun get_environ: NativeString is extern "string_NativeString_NativeString_get_environ_0"
private fun setenv( v : NativeString ) is extern "string_NativeString_NativeString_setenv_1"
end
+
+redef class Sys
+ redef init
+ do
+ var x = "NIT_SRAND".environ
+ if x != "" then srand_from(x.to_i)
+ end
+end
redef class Collection[ E ]
# Return a random element form the collection
# There must be at least one element in the collection
+ #
+ # ~~~
+ # var x = [1,2,3].rand
+ # assert x == 1 or x == 2 or x == 3
+ # ~~~
fun rand: E
do
if is_empty then abort
end
abort
end
+
+ # Return a new array made of elements in a random order.
+ #
+ # ~~~
+ # var a = [1,2,1].to_shuffle
+ # assert a == [1,1,2] or a == [1,2,1] or a == [2,1,1]
+ # ~~~
+ fun to_shuffle: Array[E]
+ do
+ var res = self.to_a
+ res.shuffle
+ return res
+ end
end
redef class SequenceRead[E]
end
end
+redef class AbstractArray[E]
+ # Reorder randomly the elements in self.
+ #
+ # ~~~
+ # var a = new Array[Int]
+ #
+ # a.shuffle
+ # assert a.is_empty
+ #
+ # a.add 1
+ # a.shuffle
+ # assert a == [1]
+ #
+ # a.add 2
+ # a.shuffle
+ # assert a == [1,2] or a == [2,1]
+ # ~~~
+ #
+ # ENSURE self.shuffle.has_exactly(old(self))
+ fun shuffle
+ do
+ for i in [0..length[ do
+ var j = i + (length-i).rand
+ var tmp = self[i]
+ self[i] = self[j]
+ self[j] = tmp
+ end
+ end
+end
+
redef class Sys
init
do
redef fun read(i)
do
if last_error != null then return ""
- if _buffer.length == _buffer_pos then
- if not eof then
- return read(i)
- end
- return ""
- end
- if _buffer_pos + i >= _buffer.length then
- var from = _buffer_pos
- _buffer_pos = _buffer.length
- if from == 0 then return _buffer.to_s
- return _buffer.substring_from(from).to_s
+ if eof then return ""
+ var p = _buffer_pos
+ var bufsp = _buffer.length - p
+ if bufsp >= i then
+ _buffer_pos += i
+ return _buffer.substring(p, i).to_s
end
- _buffer_pos += i
- return _buffer.substring(_buffer_pos - i, i).to_s
+ _buffer_pos = _buffer.length
+ var readln = _buffer.length - p
+ var s = _buffer.substring(p, readln).to_s
+ fill_buffer
+ return s + read(i - readln)
end
redef fun read_all
return hash_cache.as(not null)
end
+ # Gives the formatted string back as a Nit string with `args` in place
+ #
+ # assert "This %1 is a %2.".format("String", "formatted String") == "This String is a formatted String"
+ # assert "\\%1 This string".format("String") == "\\%1 This string"
+ fun format(args: Object...): String do
+ var s = new Array[Text]
+ var curr_st = 0
+ var i = 0
+ while i < length do
+ # Skip escaped characters
+ if self[i] == '\\' then
+ i += 1
+ # In case of format
+ else if self[i] == '%' then
+ var fmt_st = i
+ i += 1
+ var ciph_st = i
+ while i < length and self[i].is_numeric do
+ i += 1
+ end
+ i -= 1
+ var fmt_end = i
+ var ciph_len = fmt_end - ciph_st + 1
+ s.push substring(curr_st, fmt_st - curr_st)
+ s.push args[substring(ciph_st, ciph_len).to_i - 1].to_s
+ curr_st = i + 1
+ end
+ i += 1
+ end
+ s.push substring(curr_st, length - curr_st)
+ return s.to_s
+ end
+
end
# All kinds of array-based text representations.
redraw!
endfun
-" Activate the omnifunc on Nit files
-autocmd FileType nit set omnifunc=NitOmnifunc
+if !exists("g:nit_disable_omnifunc") || !g:nit_disable_omnifunc
+ " Activate the omnifunc on Nit files
+ autocmd FileType nit set omnifunc=NitOmnifunc
+endif
" Define the user command Nitdoc for ease of use
command -nargs=* Nitdoc call Nitdoc("<args>")
" FFI Python
syntax include @FFIPython syntax/python.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"Python"/ nextgroup=NITFFIBlockPython skipwhite
+syn match NITFFILanguage /\c"Python"\ze.*`{/ nextgroup=NITFFIBlockPython skipwhite
syn region NITFFIBlockPython matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIPython
" FFI Java
syntax include @FFIJava syntax/java.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"Java\(\| inner\)"/ nextgroup=NITFFIBlockJava skipwhite
+syn match NITFFILanguage /\c"Java\(\| inner\)"\ze.*`{/ nextgroup=NITFFIBlockJava skipwhite
syn region NITFFIBlockJava matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIJava
" FFI C++
syntax include @FFICpp syntax/cpp.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"C++\(\| header\| body\)"/ nextgroup=NITFFIBlockCpp skipwhite
+syn match NITFFILanguage /\c"C++\(\| header\| body\)"\ze.*`{/ nextgroup=NITFFIBlockCpp skipwhite
syn region NITFFIBlockCpp matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFICpp
" FFI Objective-C
syntax include @FFIObjC syntax/objc.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"ObjC\(\| Header\| Body\)"/ nextgroup=NITFFIBlockObjC skipwhite
+syn match NITFFILanguage /\c"ObjC\(\| Header\| Body\)"\ze.*`{/ nextgroup=NITFFIBlockObjC skipwhite
syn region NITFFIBlockObjC matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIObjC
" FFI C (the last one is the default)
syntax include @FFIC syntax/c.vim
unlet b:current_syntax
-syn match NITFFILanguage /\c"C\(\| header\| body\)"/ nextgroup=NITFFIBlockC skipwhite
+syn match NITFFILanguage /\c"C\(\| header\| body\)"\ze.*`{/ nextgroup=NITFFIBlockC skipwhite
syn region NITFFIBlockC matchgroup=NITFFI start='`{' matchgroup=NITFFI end='`}' keepend fold contains=@FFIC
hi def link NITFFILanguage Define
`--check`
: Check format of Nit source files
+ This option creates a temporary pretty printed file then checks if the output
+ of the diff command on the source file and the pretty printed one is empty.
+
+`--break-strings`
+: Break too long string literals
+
+`--inline-do`
+: Force do keyword on the same line as the method signature
+
+`--skip-empty`
+: Force formatting of empty lines
+
+ By default empty lines are kept as they were typed in the file.
+ When enabling this option, `nitpretty` will decide where to break lines and
+ will put empty lines to separate properties and code blocks.
+
# SPECIFICATION
The specification of the pretty printing is described here.
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
+ * Bootstrap v3.3.4 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#999}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
+ *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px \9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.form-group-sm .form-control{height:30px;line-height:30px}select[multiple].form-group-sm .form-control,textarea.form-group-sm .form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:5px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.form-group-lg .form-control{height:46px;line-height:46px}select[multiple].form-group-lg .form-control,textarea.form-group-lg .form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:10px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.33px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default.focus,.btn-default:active,.btn-default:focus,.btn-default:hover,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.active,.btn-primary.focus,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success.focus,.btn-success:active,.btn-success:focus,.btn-success:hover,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info.focus,.btn-info:active,.btn-info:focus,.btn-info:hover,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning.focus,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger.focus,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px)and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px)and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px)and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px)and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px)and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
\ No newline at end of file
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
-<glyph />
-<glyph />
-<glyph unicode="
" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="400" />
<glyph unicode=" " />
-<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
-<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
+<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
+<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode=" " />
-<glyph unicode=" " horiz-adv-x="652" />
-<glyph unicode=" " horiz-adv-x="1304" />
-<glyph unicode=" " horiz-adv-x="652" />
-<glyph unicode=" " horiz-adv-x="1304" />
-<glyph unicode=" " horiz-adv-x="434" />
-<glyph unicode=" " horiz-adv-x="326" />
-<glyph unicode=" " horiz-adv-x="217" />
-<glyph unicode=" " horiz-adv-x="217" />
-<glyph unicode=" " horiz-adv-x="163" />
+<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="650" />
+<glyph unicode=" " horiz-adv-x="1300" />
+<glyph unicode=" " horiz-adv-x="433" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="216" />
+<glyph unicode=" " horiz-adv-x="162" />
<glyph unicode=" " horiz-adv-x="260" />
<glyph unicode=" " horiz-adv-x="72" />
<glyph unicode=" " horiz-adv-x="260" />
-<glyph unicode=" " horiz-adv-x="326" />
-<glyph unicode="€" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
-<glyph unicode="−" d="M200 400h900v300h-900v-300z" />
+<glyph unicode=" " horiz-adv-x="325" />
+<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
+<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
+<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="☁" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
-<glyph unicode="✉" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
-<glyph unicode="✏" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
-<glyph unicode="" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
-<glyph unicode="" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
-<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
-<glyph unicode="" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
-<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
-<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
-<glyph unicode="" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
-<glyph unicode="" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
-<glyph unicode="" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
-<glyph unicode="" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
-<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
-<glyph unicode="" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
-<glyph unicode="" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
-<glyph unicode="" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
-<glyph unicode="" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
-<glyph unicode="" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
-<glyph unicode="" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
-<glyph unicode="" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
-<glyph unicode="" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
-<glyph unicode="" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
-<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
-<glyph unicode="" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
-<glyph unicode="" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
-<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
-<glyph unicode="" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
-<glyph unicode="" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
-<glyph unicode="" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
-<glyph unicode="" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
-<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
-<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
-<glyph unicode="" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
-<glyph unicode="" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
-<glyph unicode="" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
-<glyph unicode="" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
-<glyph unicode="" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
-<glyph unicode="" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
-<glyph unicode="" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
-<glyph unicode="" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
-<glyph unicode="" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
-<glyph unicode="" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
-<glyph unicode="" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
-<glyph unicode="" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
-<glyph unicode="" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
-<glyph unicode="" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
-<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
-<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
-<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
-<glyph unicode="" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
-<glyph unicode="" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
-<glyph unicode="" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
-<glyph unicode="" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
-<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
-<glyph unicode="" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
-<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
-<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
-<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" />
-<glyph unicode="" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
-<glyph unicode="" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
-<glyph unicode="" d="M200 0l900 550l-900 550v-1100z" />
-<glyph unicode="" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
-<glyph unicode="" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
-<glyph unicode="" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
-<glyph unicode="" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
-<glyph unicode="" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
-<glyph unicode="" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
-<glyph unicode="" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
-<glyph unicode="" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
-<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
-<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" />
-<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" />
-<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
-<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" />
-<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
-<glyph unicode="" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
-<glyph unicode="" d="M0 547l600 453v-300h600v-300h-600v-301z" />
-<glyph unicode="" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
-<glyph unicode="" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
-<glyph unicode="" d="M104 600h296v600h300v-600h298l-449 -600z" />
-<glyph unicode="" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
-<glyph unicode="" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
-<glyph unicode="" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
-<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
-<glyph unicode="" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
-<glyph unicode="" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
-<glyph unicode="" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
-<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
-<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
-<glyph unicode="" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
-<glyph unicode="" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
-<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
-<glyph unicode="" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
-<glyph unicode="" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
-<glyph unicode="" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
-<glyph unicode="" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
-<glyph unicode="" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
-<glyph unicode="" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
-<glyph unicode="" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
-<glyph unicode="" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
-<glyph unicode="" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
-<glyph unicode="" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
-<glyph unicode="" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
-<glyph unicode="" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
-<glyph unicode="" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
-<glyph unicode="" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
-<glyph unicode="" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
-<glyph unicode="" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
-<glyph unicode="" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
-<glyph unicode="" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" />
-<glyph unicode="" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
-<glyph unicode="" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
-<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" />
-<glyph unicode="" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" />
-<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
-<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
-<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-56 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" />
-<glyph unicode="" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
-<glyph unicode="" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
-<glyph unicode="" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
-<glyph unicode="" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
-<glyph unicode="" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
-<glyph unicode="" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
-<glyph unicode="" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
-<glyph unicode="" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" />
-<glyph unicode="" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
-<glyph unicode="" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
-<glyph unicode="" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
-<glyph unicode="" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
-<glyph unicode="" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" />
-<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
-<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
-<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
-<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
-<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
-<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
-<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
-<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
-<glyph unicode="" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
-<glyph unicode="" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
-<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
-<glyph unicode="" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
-<glyph unicode="" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" />
-<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
-<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
-<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
-<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
-<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
-<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
-<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" />
-<glyph unicode="" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
-<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
-<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
-<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
-<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
-<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
-<glyph unicode="" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
-<glyph unicode="" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
-<glyph unicode="" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" />
-<glyph unicode="" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
-<glyph unicode="" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
-<glyph unicode="" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
-<glyph unicode="" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
-<glyph unicode="" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
-<glyph unicode="" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
-<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
-<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
-<glyph unicode="" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
-<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" />
-<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
-<glyph unicode="" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
-<glyph unicode="" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
+<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
+<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
+<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
+<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
+<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
+<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
+<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
+<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
+<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
+<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
+<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
+<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
+<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
+<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
+<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
+<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
+<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
+<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
+<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
+<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
+<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
+<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
+<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
+<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
+<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
+<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
+<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
+<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
+<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
+<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
+<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
+<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
+<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
+<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
+<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
+<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
+<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
+<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
+<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
+<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
+<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
+<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
+<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
+<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
+<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
+<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
+<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
+<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
+<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
+<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
+<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
+<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
+<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
+<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
+<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
+<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
+<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
+<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
+<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
+<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
+<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
+<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
+<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
+<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
+<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
+<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
+<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
+<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
+<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
+<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
+<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
+<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
+<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
+<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
+<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
+<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
+<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
+<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
+<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
+<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
+<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
+<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
+<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
+<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
+<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
+<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
+<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
+<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
+<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
+<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
+<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
+<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
+<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
+<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
+<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
+<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
+<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
+<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
+<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
+<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
+<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
+<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
+<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
+<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
+<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
+<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
+<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
+<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
+<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
+<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
+<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
+<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
+<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
+<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
+<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
+<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
+<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
+<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
+<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
+<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
+<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
+<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
+<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
+<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
+<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
+<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
+<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
+<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
+<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
+<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
+<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
+<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
+<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
+<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
+<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
+<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
+<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
+<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
+<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
+<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
+<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
+<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
+<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
+<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg>
\ No newline at end of file
/*!
- * Bootstrap v3.1.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
+ * Bootstrap v3.3.4 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
-
-+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function f(){e.trigger("closed.bs.alert").remove()}var c=a(this),d=c.attr("data-target");d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));var e=a(d);b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger(b=a.Event("close.bs.alert"));if(b.isDefaultPrevented())return;e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.one(a.support.transition.end,f).emulateTransitionEnd(150):f()};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){b=="loadingText"?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");c.prop("type")=="radio"&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f=typeof c=="object"&&c;e||d.data("bs.button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();if(b>this.$items.length-1||b<0)return;return this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){if(this.sliding)return;return this.slide("next")},b.prototype.prev=function(){if(this.sliding)return;return this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});this.$element.trigger(j);if(j.isDefaultPrevented())return;return this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(d.css("transition-duration").slice(0,-1)*1e3)):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),typeof c=="object"&&c),g=typeof c=="string"?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),typeof c=="number"?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),c.data()),g=c.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=c.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){function e(d){a(b).remove(),a(c).each(function(){var b=f(a(this)),c={relatedTarget:this};if(!b.hasClass("open"))return;b.trigger(d=a.Event("hide.bs.dropdown",c));if(d.isDefaultPrevented())return;b.removeClass("open").trigger("hidden.bs.dropdown",c)})}function f(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}"use strict";var b=".dropdown-backdrop",c="[data-toggle=dropdown]",d=function(b){a(b).on("click.bs.dropdown",this.toggle)};d.prototype.toggle=function(b){var c=a(this);if(c.is(".disabled, :disabled"))return;var d=f(c),g=d.hasClass("open");e();if(!g){"ontouchstart"in document.documentElement&&!d.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",e);var h={relatedTarget:this};d.trigger(b=a.Event("show.bs.dropdown",h));if(b.isDefaultPrevented())return;d.toggleClass("open").trigger("shown.bs.dropdown",h),c.focus()}return!1},d.prototype.keydown=function(b){if(!/(38|40|27)/.test(b.keyCode))return;var d=a(this);b.preventDefault(),b.stopPropagation();if(d.is(".disabled, :disabled"))return;var e=f(d),g=e.hasClass("open");if(!g||g&&b.keyCode==27)return b.which==27&&e.find(c).focus(),d.click();var h=" li:not(.divider):visible a",i=e.find("[role=menu]"+h+", [role=listbox]"+h);if(!i.length)return;var j=i.index(i.filter(":focus"));b.keyCode==38&&j>0&&j--,b.keyCode==40&&j<i.length-1&&j++,~j||(j=0),i.eq(j).focus()};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),e=c.data("bs.dropdown");e||c.data("bs.dropdown",e=new d(this)),typeof b=="string"&&e[b].call(c)})},a.fn.dropdown.Constructor=d,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",e).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",c,d.prototype.toggle).on("keydown.bs.dropdown.data-api",c+", [role=menu], [role=listbox]",d.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d);if(this.isShown||d.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)})},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b);if(!this.isShown||b.isDefaultPrevented())return;this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal()},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]!==a.target&&!this.$element.has(a.target).length&&this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){a.which==27&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){if(a.target!==a.currentTarget)return;this.options.backdrop=="static"?this.$element[0].focus.call(this.$element[0]):this.hide.call(this)},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),typeof c=="object"&&c);f||e.data("bs.modal",f=new b(this,g)),typeof c=="string"?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());c.is("a")&&b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);var e=this.options.trigger.split(" ");for(var f=e.length;f--;){var g=e[f];if(g=="click")this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if(g!="manual"){var h=g=="hover"?"mouseenter":"focusin",i=g=="hover"?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);clearTimeout(c.timeout),c.hoverState="in";if(!c.options.delay||!c.options.delay.show)return c.show();c.timeout=setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show)},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);clearTimeout(c.timeout),c.hoverState="out";if(!c.options.delay||!c.options.delay.hide)return c.hide();c.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);if(b.isDefaultPrevented())return;var c=this,d=this.tip();this.setContent(),this.options.animation&&d.addClass("fade");var e=typeof this.options.placement=="function"?this.options.placement.call(this,d[0],this.$element[0]):this.options.placement,f=/\s?auto?\s?/i,g=f.test(e);g&&(e=e.replace(f,"")||"top"),d.detach().css({top:0,left:0,display:"block"}).addClass(e),this.options.container?d.appendTo(this.options.container):d.insertAfter(this.$element);var h=this.getPosition(),i=d[0].offsetWidth,j=d[0].offsetHeight;if(g){var k=this.$element.parent(),l=e,m=document.documentElement.scrollTop||document.body.scrollTop,n=this.options.container=="body"?window.innerWidth:k.outerWidth(),o=this.options.container=="body"?window.innerHeight:k.outerHeight(),p=this.options.container=="body"?0:k.offset().left;e=e=="bottom"&&h.top+h.height+j-m>o?"top":e=="top"&&h.top-m-j<0?"bottom":e=="right"&&h.right+i>n?"left":e=="left"&&h.left-i<p?"right":e,d.removeClass(l).addClass(e)}var q=this.getCalculatedOffset(e,h,i,j);this.applyPlacement(q,e),this.hoverState=null;var r=function(){c.$element.trigger("shown.bs."+c.type)};a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,r).emulateTransitionEnd(150):r()}},b.prototype.applyPlacement=function(b,c){var d,e=this.tip(),f=e[0].offsetWidth,g=e[0].offsetHeight,h=parseInt(e.css("margin-top"),10),i=parseInt(e.css("margin-left"),10);isNaN(h)&&(h=0),isNaN(i)&&(i=0),b.top=b.top+h,b.left=b.left+i,a.offset.setOffset(e[0],a.extend({using:function(a){e.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),e.addClass("in");var j=e[0].offsetWidth,k=e[0].offsetHeight;c=="top"&&k!=g&&(d=!0,b.top=b.top+g-k);if(/bottom|top/.test(c)){var l=0;b.left<0&&(l=b.left*-2,b.left=0,e.offset(b),j=e[0].offsetWidth,k=e[0].offsetHeight),this.replaceArrow(l-f+j,j,"left")}else this.replaceArrow(k-g,k,"top");d&&e.offset(b)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function e(){b.hoverState!="in"&&c.detach(),b.$element.trigger("hidden.bs."+b.type)}var b=this,c=this.tip(),d=a.Event("hide.bs."+this.type);this.$element.trigger(d);if(d.isDefaultPrevented())return;return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?c.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),this.hoverState=null,this},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},typeof b.getBoundingClientRect=="function"?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return a=="bottom"?{top:b.top+b.height,left:b.left+b.width/2-c/2}:a=="top"?{top:b.top-d,left:b.left+b.width/2-c/2}:a=="left"?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f=typeof c=="object"&&c;if(!e&&c=="destroy")return;e||d.data("bs.tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?typeof c=="string"?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||(typeof b.content=="function"?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f=typeof c=="object"&&c;if(!e&&c=="destroy")return;e||d.data("bs.popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});b.trigger(f);if(f.isDefaultPrevented())return;var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})},b.prototype.activate=function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g).emulateTransitionEnd(150):g(),e.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;this.affixed=="top"&&(e.top+=d),typeof f!="object"&&(h=g=f),typeof g=="function"&&(g=f.top(this.$element)),typeof h=="function"&&(h=f.bottom(this.$element));var i=this.unpin!=null&&d+this.unpin<=e.top?!1:h!=null&&e.top+this.$element.height()>=c-h?"bottom":g!=null&&d<=g?"top":!1;if(this.affixed===i)return;this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k);if(k.isDefaultPrevented())return;this.affixed=i,this.unpin=i=="bottom"?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),i=="bottom"&&this.$element.offset({top:c-h-this.$element.height()})};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f=typeof c=="object"&&c;e||d.data("bs.affix",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(this.transitioning||this.$element.hasClass("in"))return;var b=a.Event("show.bs.collapse");this.$element.trigger(b);if(b.isDefaultPrevented())return;var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])},b.prototype.hide=function(){if(this.transitioning||!this.$element.hasClass("in"))return;var b=a.Event("hide.bs.collapse");this.$element.trigger(b);if(b.isDefaultPrevented())return;var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};if(!a.support.transition)return d.call(this);this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350)},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),typeof c=="object"&&c);!e&&f.toggle&&c=="show"&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":c.data(),i=c.attr("data-parent"),j=i&&a(i);if(!g||!g.transitioning)j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(c).addClass("collapsed"),c[f.hasClass("in")?"addClass":"removeClass"]("collapsed");f.collapse(h)})}(jQuery),+function(a){function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}"use strict",b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this,d=this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,c=b-this.$scrollElement.height(),d=this.offsets,e=this.targets,f=this.activeTarget,g;if(a>=c)return f!=(g=e.last()[0])&&this.activate(g);if(f&&a<=d[0])return f!=(g=e[0])&&this.activate(g);for(g=d.length;g--;)f!=e[g]&&a>=d[g]&&(!d[g+1]||a<=d[g+1])&&this.activate(e[g])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f=typeof c=="object"&&c;e||d.data("bs.scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(a.style[c]!==undefined)return{end:b[c]};return!1}"use strict",a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery)
\ No newline at end of file
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){
+var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
_n_kwif = new TKwif
_n_expr = condition
_n_expr.parent = self
+ _n_kwthen = new TKwthen
_n_then = new ABlockExpr.make
+ _n_kwelse = new TKwelse
_n_else = new ABlockExpr.make
self.mtype = mtype
self.is_typed = true
# files to compile TODO check is appropriate
var files = new Array[String]
- fun add_local_function( efc : CFunction )
+ # Add `c_function` as a `static` function local to this unit
+ fun add_local_function(c_function: CFunction)
do
- body_decl.add "static {efc.signature};\n"
+ body_decl.add "static {c_function.signature};\n"
body_impl.add "\n"
- body_impl.add efc.to_writer
+ body_impl.add c_function.to_writer
end
- fun add_exported_function( efc : CFunction )
+ # Add `c_function` as a public function to this unit
+ fun add_exported_function(c_function: CFunction)
do
- header_decl.add( "{efc.signature};\n" )
- body_impl.add( "\n" )
- body_impl.add( efc.to_writer )
+ header_decl.add "{c_function.signature};\n"
+ body_impl.add "\n"
+ body_impl.add c_function.to_writer
end
- fun compile_header_core( stream : Writer )
+ # Write the core of the header to `stream`
+ fun compile_header_core(stream: Writer)
do
- header_c_base.write_to( stream )
- header_custom.write_to( stream )
- header_c_types.write_to( stream )
- header_decl.write_to( stream )
+ header_c_base.write_to stream
+ header_custom.write_to stream
+ header_c_types.write_to stream
+ header_decl.write_to stream
end
- fun compile_body_core( stream : Writer )
+ # Write the core of the body to `stream`
+ fun compile_body_core(stream: Writer)
do
- body_decl.write_to( stream )
- body_custom.write_to( stream )
- body_impl.write_to( stream )
+ body_decl.write_to stream
+ body_custom.write_to stream
+ body_impl.write_to stream
end
end
end
end
+redef class ANamedargExpr
+ redef fun expr(v)
+ do
+ return v.expr(self.n_expr, null)
+ end
+end
+
redef class ADebugTypeExpr
redef fun stmt(v)
do
# See the License for the specific language governing permissions and
# limitations under the License.
-# FFI support for the compilers
+# Full FFI support for the compiler
module compiler_ffi
-intrude import abstract_compiler
-intrude import ffi
+intrude import light
import nitni
redef class MModule
private var foreign_callbacks = new ForeignCallbackSet
- var nitni_ccu: nullable CCompilationUnit = null
-
- private fun nmodule(v: AbstractCompilerVisitor): nullable AModule
- do
- return v.compiler.modelbuilder.mmodule2node(self)
- end
redef fun finalize_ffi(compiler: AbstractCompiler)
do
if not uses_ffi then return
- var v = compiler.new_visitor
- var n = nmodule(v)
- if n == null then return
- n.ensure_compile_ffi_wrapper
- finalize_ffi_wrapper(v.compiler.modelbuilder.compile_dir, v.compiler.mainmodule)
- for file in ffi_files do v.compiler.extern_bodies.add(file)
-
- ensure_compile_nitni_base(v)
-
- nitni_ccu.header_c_types.add("#include \"{c_name}._ffi.h\"\n")
- nitni_ccu.header_c_types.add """
-extern void nitni_global_ref_incr(void*);
-extern void nitni_global_ref_decr(void*);
-"""
-
- var cflags = self.cflags[""].join(" ")
- nitni_ccu.write_as_nitni(self, v.compiler.modelbuilder.compile_dir)
-
- for file in nitni_ccu.files do
- var f = new ExternCFile(file, cflags)
- f.pkgconfigs.add_all pkgconfigs
- v.compiler.extern_bodies.add(f)
- end
+ super
- # reset FFI things so the next compilation job, if any, starts with a clean context
- # FIXME clean and rationalize this
- nitni_ccu = null
- compiled_ffi_methods.clear
- ffi_ccu = null
- ffi_files.clear
compiled_callbacks.clear
#Do not reset `foreign_callbacks` and `ffi_callbacks` because they are computed in previous phases
end
- private fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
- do
- if nitni_ccu != null then return
-
- nitni_ccu = new CCompilationUnit
- end
-
- redef fun collect_linker_libs
- do
- if not self.ldflags.keys.has("") then return null
- return self.ldflags[""]
- end
-
private var compiled_callbacks = new Array[NitniCallback]
# Returns true if callbacks has yet to be generated and register it as being generated
end
redef class AMethPropdef
- private fun compile_ffi_support_to_c(v: AbstractCompilerVisitor)
+ redef fun compile_ffi_support_to_c(v)
do
+ super
+
var mmodule = mpropdef.mclassdef.mmodule
var mainmodule = v.compiler.mainmodule
- var amodule = v.compiler.modelbuilder.mmodule2node(mmodule)
- var mclass_type = mpropdef.mclassdef.bound_mtype
-
- # Declare as extern
- var csignature = mpropdef.mproperty.build_csignature(mclass_type, mmodule, "___impl", long_signature, internal_call_context)
- v.declare_once("{csignature};")
-
- # FFI part
- amodule.ensure_compile_ffi_wrapper
- compile_ffi_method(mmodule)
-
- # nitni - Compile missing callbacks
- mmodule.ensure_compile_nitni_base(v)
var ccu = mmodule.nitni_ccu.as(not null)
for mtype in foreign_callbacks.types do
# manage nitni callback set
mmodule.foreign_callbacks.join(foreign_callbacks)
end
+end
- redef fun compile_externmeth_to_c(v, mpropdef, arguments)
+redef class MExplicitCall
+ private fun compile_extern_callback(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
do
- # if using the old native interface fallback on previous implementation
- if n_extern_code_block == null then return super
+ var mproperty = mproperty
+ assert mproperty isa MMethod
- var mmodule = mpropdef.mclassdef.mmodule
- mmodule.uses_ffi = true
+ # In nitni files, declare internal function as extern
+ var full_friendly_csignature = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
+ ccu.header_decl.add("extern {full_friendly_csignature};\n")
- var mclass_type = mpropdef.mclassdef.bound_mtype
+ if not compile_implementation_too then return
- # Outgoing code in compiler
- var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
- var recv_var: nullable RuntimeVariable = null
- var return_mtype = mpropdef.msignature.return_mtype
- if return_mtype != null then
- return_mtype = return_mtype.anchor_to(mmodule, mclass_type)
- recv_var = v.new_var(return_mtype)
- end
+ # Internally, implement internal function
+ var nitni_visitor = v.compiler.new_visitor
+ nitni_visitor.frame = v.frame
+ var msignature = mproperty.lookup_first_definition(v.compiler.mainmodule, recv_mtype).msignature
+ var csignature_blind = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
- v.adapt_signature(mpropdef, arguments)
- v.unbox_signature_extern(mpropdef, arguments)
-
- var arguments_for_c = new Array[String]
- for a in [0..arguments.length[ do
- var arg = arguments[a]
- var param_mtype: MType
- if a == 0 then
- param_mtype = mpropdef.mclassdef.mclass.mclass_type
- else param_mtype = mpropdef.msignature.mparameters[a-1].mtype
-
- param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
-
- if param_mtype.is_cprimitive then
- arguments_for_c.add(arg.name)
- else
- v.add("struct nitni_instance* var_for_c_{a};")
- v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
- v.add("var_for_c_{a}->value = {arg.name};")
- arguments_for_c.add("var_for_c_{a}")
- end
- end
+ nitni_visitor.add_decl("/* nitni callback for {mproperty.full_name} */")
+ nitni_visitor.add_decl("{csignature_blind} \{")
- if recv_var == null then
- v.add("{externname}({arguments_for_c.join(", ")});")
+ var vars = new Array[RuntimeVariable]
+ var mtype: MType = recv_mtype
+ var recv_var = null
+ if mproperty.is_init then
+ var recv_mtype = recv_mtype
+ recv_var = nitni_visitor.init_instance_or_extern(recv_mtype)
+ nitni_visitor.add("{mtype.ctype} recv /* var self: {mtype} */;")
+ nitni_visitor.add("recv = {recv_var};")
else
- assert return_mtype != null
- if return_mtype.is_cprimitive then
- v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
- else
- v.add("struct nitni_instance* ret_var;")
- v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
- v.add("{recv_var} = ret_var->value;")
- end
- recv_var = v.box_extern(recv_var, return_mtype)
- v.ret(recv_var)
+ mtype = mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
+ recv_var = nitni_visitor.var_from_c("recv", mtype)
+ recv_var = nitni_visitor.box_extern(recv_var, mtype)
end
- compile_ffi_support_to_c(v)
- return true
- end
-
- redef fun compile_externinit_to_c(v, mpropdef, arguments)
- do
- # if using the old native interface fallback on previous implementation
- if n_extern_code_block == null then return super
-
- var mmodule = mpropdef.mclassdef.mmodule
- mmodule.uses_ffi = true
-
- var mclass_type = mpropdef.mclassdef.bound_mtype
-
- var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
- var return_mtype = arguments.first.mtype
- var recv_var = v.new_var(return_mtype)
-
- v.adapt_signature(mpropdef, arguments)
- v.unbox_signature_extern(mpropdef, arguments)
-
- arguments.shift
-
- var arguments_for_c = new Array[String]
- for a in [0..arguments.length[ do
- var arg = arguments[a]
- var param_mtype: MType
- param_mtype = mpropdef.msignature.mparameters[a].mtype
- param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
-
- if param_mtype.is_cprimitive then
- arguments_for_c.add(arg.name)
- else
- v.add("struct nitni_instance* var_for_c_{a};")
- v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
- v.add("var_for_c_{a}->value = {arg.name};")
- arguments_for_c.add("var_for_c_{a}")
- end
- end
+ vars.add(recv_var)
- if return_mtype.is_cprimitive then
- v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
- else
- v.add("struct nitni_instance* ret_var;")
- v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
- v.add("{recv_var} = ret_var->value;")
+ for p in msignature.mparameters do
+ var arg_mtype = p.mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
+ var arg = nitni_visitor.var_from_c(p.name, arg_mtype)
+ arg = nitni_visitor.box_extern(arg, arg_mtype)
+ vars.add(arg)
end
- recv_var = v.box_extern(recv_var, return_mtype)
- v.ret(recv_var)
- compile_ffi_support_to_c(v)
- return true
- end
-end
-
-redef class CCompilationUnit
- fun write_as_nitni(mmodule: MModule, compdir: String)
- do
- var base_name = "{mmodule.c_name}._nitni"
-
- var h_file = "{base_name}.h"
- write_header_to_file( mmodule, "{compdir}/{h_file}", new Array[String],
- "{mmodule.c_name.to_s.to_upper}_NITG_NITNI_H")
-
- var c_file = "{base_name}.c"
- write_body_to_file( mmodule, "{compdir}/{c_file}", ["\"{h_file}\""] )
-
- files.add( "{compdir}/{c_file}" )
- end
-end
-
-redef class AbstractCompiler
- # Cache to avoid multiple compilation of NULL values
- # see FIXME in `MNullableType#compile_extern_helper_functions`
- private var compiled_null_types = new Array[MNullableType]
-end
+ var ret_var = nitni_visitor.send(mproperty, vars)
-redef class AbstractCompilerVisitor
- # Create a `RuntimeVariable` for this C variable originating from C user code
- private fun var_from_c(name: String, mtype: MType): RuntimeVariable
- do
- if mtype.is_cprimitive then
- return new RuntimeVariable(name, mtype, mtype)
- else
- return new RuntimeVariable("{name}->value", mtype, mtype)
+ var return_mtype = msignature.return_mtype
+ if mproperty.is_init then
+ if recv_mtype.mclass.kind != extern_kind then ret_var = recv_var
+ return_mtype = recv_mtype
end
- end
-
- # Return a `RuntimeVarible` to C user code
- private fun ret_to_c(src: RuntimeVariable, mtype: MType)
- do
- if mtype.is_cprimitive then
- add("return {src};")
- else
- add("struct nitni_instance* ret_for_c;")
- add("ret_for_c = nit_alloc(sizeof(struct nitni_instance));")
- add("ret_for_c->value = {src};")
- add("return ret_for_c;")
+ if return_mtype != null then
+ assert ret_var != null
+ return_mtype = return_mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
+ ret_var = nitni_visitor.autobox(ret_var, return_mtype)
+ ret_var = nitni_visitor.unbox_extern(ret_var, return_mtype)
+ nitni_visitor.ret_to_c(ret_var, return_mtype)
end
+ nitni_visitor.add("\}")
end
end
redef class MType
- private fun compile_extern_type(v: AbstractCompilerVisitor, ccu: CCompilationUnit)
- do
- assert not is_cprimitive
-
- # define friendly type
- ccu.header_c_types.add("#ifndef NIT_TYPE_{cname}\n")
- ccu.header_c_types.add("#define NIT_TYPE_{cname} 1\n")
- ccu.header_c_types.add("typedef struct nitni_instance *{cname};\n")
- ccu.header_c_types.add("#endif\n")
- end
-
private fun compile_extern_helper_functions(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
do
# actually, we do not need to do anything when using the bohem garbage collector
end
end
-redef class MExplicitCall
- private fun compile_extern_callback(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
- do
- var mproperty = mproperty
- assert mproperty isa MMethod
-
- # In nitni files, declare internal function as extern
- var full_friendly_csignature = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
- ccu.header_decl.add("extern {full_friendly_csignature};\n")
-
- if not compile_implementation_too then return
-
- # Internally, implement internal function
- var nitni_visitor = v.compiler.new_visitor
- nitni_visitor.frame = v.frame
- var msignature = mproperty.lookup_first_definition(v.compiler.mainmodule, recv_mtype).msignature
- var csignature_blind = mproperty.build_csignature(recv_mtype, v.compiler.mainmodule, null, long_signature, internal_call_context)
-
- nitni_visitor.add_decl("/* nitni callback for {mproperty.full_name} */")
- nitni_visitor.add_decl("{csignature_blind} \{")
-
- var vars = new Array[RuntimeVariable]
- var mtype: MType = recv_mtype
- var recv_var = null
- if mproperty.is_init then
- var recv_mtype = recv_mtype
- recv_var = nitni_visitor.init_instance_or_extern(recv_mtype)
- nitni_visitor.add("{mtype.ctype} recv /* var self: {mtype} */;")
- nitni_visitor.add("recv = {recv_var};")
- else
- mtype = mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- recv_var = nitni_visitor.var_from_c("recv", mtype)
- recv_var = nitni_visitor.box_extern(recv_var, mtype)
- end
-
- vars.add(recv_var)
-
- for p in msignature.mparameters do
- var arg_mtype = p.mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- var arg = nitni_visitor.var_from_c(p.name, arg_mtype)
- arg = nitni_visitor.box_extern(arg, arg_mtype)
- vars.add(arg)
- end
-
- var ret_var = nitni_visitor.send(mproperty, vars)
-
- var return_mtype = msignature.return_mtype
- if mproperty.is_init then
- if recv_mtype.mclass.kind != extern_kind then ret_var = recv_var
- return_mtype = recv_mtype
- end
- if return_mtype != null then
- assert ret_var != null
- return_mtype = return_mtype.anchor_to(v.compiler.mainmodule, recv_mtype)
- ret_var = nitni_visitor.autobox(ret_var, return_mtype)
- ret_var = nitni_visitor.unbox_extern(ret_var, return_mtype)
- nitni_visitor.ret_to_c(ret_var, return_mtype)
- end
- nitni_visitor.add("\}")
- end
-end
-
redef class MExplicitSuper
private fun compile_extern_callback(v: AbstractCompilerVisitor, ccu: CCompilationUnit, compile_implementation_too: Bool)
do
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2013-2015 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# 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.
+
+# Light FFI support for the compiler
+module light
+
+intrude import abstract_compiler
+intrude import ffi::light_ffi
+
+redef class MModule
+ # `CCompilationUnit` used for nitni signatures and code specific to the compiler
+ var nitni_ccu: nullable CCompilationUnit = null
+
+ private fun nmodule(v: AbstractCompilerVisitor): nullable AModule
+ do
+ return v.compiler.modelbuilder.mmodule2node(self)
+ end
+
+ redef fun finalize_ffi(compiler: AbstractCompiler)
+ do
+ if not uses_ffi then return
+
+ var v = compiler.new_visitor
+ var n = nmodule(v)
+ if n == null then return
+ n.ensure_compile_ffi_wrapper
+ finalize_ffi_wrapper(v.compiler.modelbuilder.compile_dir, v.compiler.mainmodule)
+ for file in ffi_files do v.compiler.extern_bodies.add(file)
+
+ ensure_compile_nitni_base(v)
+
+ nitni_ccu.header_c_types.add("#include \"{c_name}._ffi.h\"\n")
+ nitni_ccu.header_c_types.add """
+extern void nitni_global_ref_incr(void*);
+extern void nitni_global_ref_decr(void*);
+"""
+
+ var cflags = self.cflags[""].join(" ")
+ nitni_ccu.write_as_nitni(self, v.compiler.modelbuilder.compile_dir)
+
+ for file in nitni_ccu.files do
+ var f = new ExternCFile(file, cflags)
+ f.pkgconfigs.add_all pkgconfigs
+ v.compiler.extern_bodies.add(f)
+ end
+
+ # reset FFI things so the next compilation job, if any, starts with a clean context
+ # FIXME clean and rationalize this
+ nitni_ccu = null
+ compiled_ffi_methods.clear
+ ffi_ccu = null
+ ffi_files.clear
+ end
+
+ private fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
+ do
+ if nitni_ccu != null then return
+
+ nitni_ccu = new CCompilationUnit
+ end
+
+ redef fun collect_linker_libs
+ do
+ if not self.ldflags.keys.has("") then return null
+ return self.ldflags[""]
+ end
+end
+
+redef class AMethPropdef
+ private fun compile_ffi_support_to_c(v: AbstractCompilerVisitor)
+ do
+ var mmodule = mpropdef.mclassdef.mmodule
+ var amodule = v.compiler.modelbuilder.mmodule2node(mmodule)
+ var mclass_type = mpropdef.mclassdef.bound_mtype
+
+ # Declare as extern
+ var csignature = mpropdef.mproperty.build_csignature(mclass_type, mmodule, "___impl", long_signature, internal_call_context)
+ v.declare_once("{csignature};")
+
+ # FFI part
+ amodule.ensure_compile_ffi_wrapper
+ compile_ffi_method(mmodule)
+
+ # nitni - Compile missing callbacks
+ mmodule.ensure_compile_nitni_base(v)
+ end
+
+ # Should we compile the extern method `self`?
+ #
+ # Returns false when restricting to the light FFI on methods using callbacks.
+ fun accept_externmeth: Bool do return true
+
+ redef fun compile_externmeth_to_c(v, mpropdef, arguments)
+ do
+ # if using the old native interface fallback on previous implementation
+ if n_extern_code_block == null then return super
+
+ if not accept_externmeth then return false
+
+ var mmodule = mpropdef.mclassdef.mmodule
+ mmodule.uses_ffi = true
+
+ var mclass_type = mpropdef.mclassdef.bound_mtype
+
+ # Outgoing code in compiler
+ var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
+ var recv_var: nullable RuntimeVariable = null
+ var return_mtype = mpropdef.msignature.return_mtype
+ if return_mtype != null then
+ return_mtype = return_mtype.anchor_to(mmodule, mclass_type)
+ recv_var = v.new_var(return_mtype)
+ end
+
+ v.adapt_signature(mpropdef, arguments)
+ v.unbox_signature_extern(mpropdef, arguments)
+
+ var arguments_for_c = new Array[String]
+ for a in [0..arguments.length[ do
+ var arg = arguments[a]
+ var param_mtype: MType
+ if a == 0 then
+ param_mtype = mpropdef.mclassdef.mclass.mclass_type
+ else param_mtype = mpropdef.msignature.mparameters[a-1].mtype
+
+ param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
+
+ if param_mtype.is_cprimitive then
+ arguments_for_c.add(arg.name)
+ else
+ v.add("struct nitni_instance* var_for_c_{a};")
+ v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
+ v.add("var_for_c_{a}->value = {arg.name};")
+ arguments_for_c.add("var_for_c_{a}")
+ end
+ end
+
+ if recv_var == null then
+ v.add("{externname}({arguments_for_c.join(", ")});")
+ else
+ assert return_mtype != null
+ if return_mtype.is_cprimitive then
+ v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
+ else
+ v.add("struct nitni_instance* ret_var;")
+ v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
+ v.add("{recv_var} = ret_var->value;")
+ end
+ recv_var = v.box_extern(recv_var, return_mtype)
+ v.ret(recv_var)
+ end
+
+ compile_ffi_support_to_c(v)
+ return true
+ end
+
+ redef fun compile_externinit_to_c(v, mpropdef, arguments)
+ do
+ # if using the old native interface fallback on previous implementation
+ if n_extern_code_block == null then return super
+
+ if not accept_externmeth then return false
+
+ var mmodule = mpropdef.mclassdef.mmodule
+ mmodule.uses_ffi = true
+
+ var mclass_type = mpropdef.mclassdef.bound_mtype
+
+ var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)
+ var return_mtype = arguments.first.mtype
+ var recv_var = v.new_var(return_mtype)
+
+ v.adapt_signature(mpropdef, arguments)
+ v.unbox_signature_extern(mpropdef, arguments)
+
+ arguments.shift
+
+ var arguments_for_c = new Array[String]
+ for a in [0..arguments.length[ do
+ var arg = arguments[a]
+ var param_mtype: MType
+ param_mtype = mpropdef.msignature.mparameters[a].mtype
+ param_mtype = param_mtype.anchor_to(mmodule, mclass_type)
+
+ if param_mtype.is_cprimitive then
+ arguments_for_c.add(arg.name)
+ else
+ v.add("struct nitni_instance* var_for_c_{a};")
+ v.add("var_for_c_{a} = nit_alloc(sizeof(struct nitni_instance));")
+ v.add("var_for_c_{a}->value = {arg.name};")
+ arguments_for_c.add("var_for_c_{a}")
+ end
+ end
+
+ if return_mtype.is_cprimitive then
+ v.add("{recv_var} = {externname}({arguments_for_c.join(", ")});")
+ else
+ v.add("struct nitni_instance* ret_var;")
+ v.add("ret_var = {externname}({arguments_for_c.join(", ")});")
+ v.add("{recv_var} = ret_var->value;")
+ end
+ recv_var = v.box_extern(recv_var, return_mtype)
+ v.ret(recv_var)
+
+ compile_ffi_support_to_c(v)
+ return true
+ end
+end
+
+redef class CCompilationUnit
+ # Compile a `_nitni` files, used to implement nitni features for the compiler
+ fun write_as_nitni(mmodule: MModule, compdir: String)
+ do
+ var base_name = "{mmodule.c_name}._nitni"
+
+ var h_file = "{base_name}.h"
+ write_header_to_file( mmodule, "{compdir}/{h_file}", new Array[String],
+ "{mmodule.c_name.to_s.to_upper}_NITG_NITNI_H")
+
+ var c_file = "{base_name}.c"
+ write_body_to_file( mmodule, "{compdir}/{c_file}", ["\"{h_file}\""] )
+
+ files.add( "{compdir}/{c_file}" )
+ end
+end
+
+redef class AbstractCompiler
+ # Cache to avoid multiple compilation of NULL values
+ # see FIXME in `MNullableType#compile_extern_helper_functions`
+ private var compiled_null_types = new Array[MNullableType]
+end
+
+redef class AbstractCompilerVisitor
+ # Create a `RuntimeVariable` for this C variable originating from C user code
+ private fun var_from_c(name: String, mtype: MType): RuntimeVariable
+ do
+ if mtype.is_cprimitive then
+ return new RuntimeVariable(name, mtype, mtype)
+ else
+ return new RuntimeVariable("{name}->value", mtype, mtype)
+ end
+ end
+
+ # Return a `RuntimeVarible` to C user code
+ private fun ret_to_c(src: RuntimeVariable, mtype: MType)
+ do
+ if mtype.is_cprimitive then
+ add("return {src};")
+ else
+ add("struct nitni_instance* ret_for_c;")
+ add("ret_for_c = nit_alloc(sizeof(struct nitni_instance));")
+ add("ret_for_c->value = {src};")
+ add("return ret_for_c;")
+ end
+ end
+end
+
+redef class MType
+ private fun compile_extern_type(v: AbstractCompilerVisitor, ccu: CCompilationUnit)
+ do
+ assert not is_cprimitive
+
+ # define friendly type
+ ccu.header_c_types.add("#ifndef NIT_TYPE_{cname}\n")
+ ccu.header_c_types.add("#define NIT_TYPE_{cname} 1\n")
+ ccu.header_c_types.add("typedef struct nitni_instance *{cname};\n")
+ ccu.header_c_types.add("#endif\n")
+ end
+end
--- /dev/null
+# 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.
+
+# Compiler support for the light FFI only, detects unsupported usage of callbacks
+module light_only
+
+import light
+
+redef class MClassType
+ redef fun cname_normal_class do return "void*"
+end
+
+redef class AMethPropdef
+ redef fun accept_externmeth do return n_extern_calls == null
+end
if compiler.modelbuilder.toolcontext.opt_invocation_metrics.value then add("count_invoke_by_tables++;")
assert arguments.length == mmethod.intro.msignature.arity + 1 else debug("Invalid arity for {mmethod}. {arguments.length} arguments given.")
- var recv = arguments.first
var res0 = before_send(mmethod, arguments)
var runtime_function = mmethod.intro.virtual_runtime_function
var msignature = runtime_function.called_signature
+ adapt_signature(mmethod.intro, arguments)
+
var res: nullable RuntimeVariable
var ret = msignature.return_mtype
if ret == null then
res = self.new_var(ret)
end
- var ss = new FlatBuffer
-
- ss.append("{recv}")
- for i in [0..msignature.arity[ do
- var a = arguments[i+1]
- var t = msignature.mparameters[i].mtype
- if i == msignature.vararg_rank then
- t = arguments[i+1].mcasttype
- end
- a = self.autobox(a, t)
- ss.append(", {a}")
- end
+ var ss = arguments.join(", ")
var const_color = mentity.const_color
var ress
end
end
op.append("\}\n")
- return new GraphArticle(mentity, name, op)
+ return new GraphArticle(mentity, name, "Importation Graph", op)
end
end
end
end
op.append("\}\n")
- return new GraphArticle(mentity, name, op)
+ return new GraphArticle(mentity, name, "Inheritance Graph", op)
end
end
# Graph ID (used for outputing file with names).
var id: String
+ # Graph title to display.
+ var graph_title: String
+
# Dot script of the graph.
var dot: Text
end
end
- # A source link template for a given location
- fun tpl_showsource(location: nullable Location): nullable String
+ # Returns a HTML link for a given `location`.
+ fun html_source_link(location: nullable Location): nullable String
do
if location == null then return null
var source = ctx.opt_source.value
# build page
init_title(v, doc)
- init_sidebar(v, doc)
init_topmenu(v, doc)
init_content(v, doc)
+ init_sidebar(v, doc)
# piwik tracking
var tracker_url = v.ctx.opt_piwik_tracker.value
# Build top menu template if any.
fun init_topmenu(v: RenderHTMLPhase, doc: DocModel) do
topmenu = new DocTopMenu
- var brand = v.ctx.opt_custom_brand.value
- if brand != null then
- var tpl = new Template
- tpl.add "<span class='navbar-brand'>"
- tpl.add brand
- tpl.add "</span>"
- topmenu.brand = tpl
- end
+ topmenu.brand = v.ctx.opt_custom_brand.value
var title = "Overview"
if v.ctx.opt_custom_title.value != null then
title = v.ctx.opt_custom_title.value.to_s
# Build page sidebar if any.
fun init_sidebar(v: RenderHTMLPhase, doc: DocModel) do
- sidebar = new TplSidebar
+ sidebar = new DocSideBar
+ sidebar.boxes.add new DocSideBox("Summary", html_toc)
end
# Build page content template.
- fun init_content(v: RenderHTMLPhase, doc: DocModel) do end
+ fun init_content(v: RenderHTMLPhase, doc: DocModel) do
+ root.init_html_render(v, doc, self)
+ end
end
redef class OverviewPage
title = v.ctx.opt_custom_title.value.to_s
end
end
-
- # TODO this should be done in StructurePhase.
- redef fun init_content(v, doc) do
- # intro text
- var section = new TplSection.with_title("overview", title)
- var article = new TplArticle("intro")
- if v.ctx.opt_custom_intro.value != null then
- article.content = v.ctx.opt_custom_intro.value.to_s
- end
- section.add_child article
- # Projects list
- var mprojects = doc.model.mprojects.to_a
- var sorter = new MConcernRankSorter
- sorter.sort mprojects
- var ssection = new TplSection.with_title("projects", "Projects")
- for mproject in mprojects do
- var sarticle = mproject.tpl_article
- sarticle.subtitle = mproject.tpl_declaration
- sarticle.content = mproject.tpl_definition
- var mdoc = mproject.mdoc_or_fallback
- if mdoc != null then
- sarticle.content = mdoc.tpl_short_comment
- end
- ssection.add_child sarticle
- end
- section.add_child ssection
- self.add_section section
- end
-
- redef fun init_sidebar(v, doc) do sidebar = new TplSidebar
end
redef class SearchPage
end
redef fun init_sidebar(v, doc) do end
-
- # TODO this should be done in StructurePhase.
- redef fun init_content(v, doc) do
- var tpl = new TplSearchPage("search_all")
- var section = new TplSection("search")
- # title
- tpl.title = "Index"
- # modules list
- for mmodule in modules_list(v, doc) do
- tpl.modules.add mmodule.tpl_link
- end
- # classes list
- for mclass in classes_list(v, doc) do
- tpl.classes.add mclass.tpl_link
- end
- # properties list
- for mproperty in mprops_list(v, doc) do
- var m = new Template
- m.add mproperty.intro.tpl_link
- m.add " ("
- m.add mproperty.intro.mclassdef.mclass.tpl_link
- m.add ")"
- tpl.props.add m
- end
- section.add_child tpl
- self.add_section section
- end
-
- # Extract mmodule list to display (sorted by name)
- private fun modules_list(v: RenderHTMLPhase, doc: DocModel): Array[MModule] do
- var sorted = new Array[MModule]
- for mmodule in doc.model.mmodule_importation_hierarchy do
- if mmodule.is_fictive or mmodule.is_test_suite then continue
- sorted.add mmodule
- end
- v.name_sorter.sort(sorted)
- return sorted
- end
-
- # Extract mclass list to display (sorted by name)
- private fun classes_list(v: RenderHTMLPhase, doc: DocModel): Array[MClass] do
- var sorted = doc.mclasses.to_a
- v.name_sorter.sort(sorted)
- return sorted
- end
-
- # Extract mproperty list to display (sorted by name)
- private fun mprops_list(v: RenderHTMLPhase, doc: DocModel): Array[MProperty] do
- var sorted = doc.mproperties.to_a
- v.name_sorter.sort(sorted)
- return sorted
- end
end
redef class MEntityPage
redef var html_url is lazy do return mentity.nitdoc_url
redef fun init_title(v, doc) do title = mentity.html_name
- redef fun init_content(v, doc) do add_section root.start_rendering(v, doc, self)
end
# FIXME all clases below are roughly copied from `doc_pages` and adapted to new
mclasses.add_all intros
mclasses.add_all redefs
if mclasses.is_empty then return
- var list = new TplList.with_classes(["list-unstyled", "list-labeled"])
-
+ var list = new UnorderedList
+ list.css_classes.add "list-unstyled list-labeled"
var sorted = mclasses.to_a
v.name_sorter.sort(sorted)
for mclass in sorted do
list.add_li tpl_sidebar_item(mclass)
end
- sidebar.boxes.add new TplSideBox.with_content("All classes", list)
+ sidebar.boxes.add new DocSideBox("All classes", list)
+ sidebar.boxes.last.is_open = false
end
- private fun tpl_sidebar_item(def: MClass): TplListItem do
- var classes = def.intro.tpl_css_classes.to_a
+ private fun tpl_sidebar_item(def: MClass): ListItem do
+ var classes = def.intro.css_classes
if intros.has(def) then
classes.add "intro"
else
classes.add "redef"
end
var lnk = new Template
- lnk.add new TplLabel.with_classes(classes)
- lnk.add def.tpl_link
- return new TplListItem.with_content(lnk)
+ lnk.add new DocHTMLLabel.with_classes(classes)
+ lnk.add def.html_link
+ return new ListItem(lnk)
end
end
mclasses.add_all mentity.filter_intro_mclasses(v.ctx.min_visibility)
mclasses.add_all mentity.filter_redef_mclasses(v.ctx.min_visibility)
if mclasses.is_empty then return
- var list = new TplList.with_classes(["list-unstyled", "list-labeled"])
+ var list = new UnorderedList
+ list.css_classes.add "list-unstyled list-labeled"
var sorted = mclasses.to_a
v.name_sorter.sort(sorted)
for mclass in sorted do
list.add_li tpl_sidebar_item(mclass)
end
- sidebar.boxes.add new TplSideBox.with_content("All classes", list)
+ sidebar.boxes.add new DocSideBox("All classes", list)
+ sidebar.boxes.last.is_open = false
end
- private fun tpl_sidebar_item(def: MClass): TplListItem do
- var classes = def.intro.tpl_css_classes.to_a
+ private fun tpl_sidebar_item(def: MClass): ListItem do
+ var classes = def.intro.css_classes
if def.intro_mmodule == self.mentity then
classes.add "intro"
else
classes.add "redef"
end
var lnk = new Template
- lnk.add new TplLabel.with_classes(classes)
- lnk.add def.tpl_link
- return new TplListItem.with_content(lnk)
+ lnk.add new DocHTMLLabel.with_classes(classes)
+ lnk.add def.html_link
+ return new ListItem(lnk)
end
end
redef fun init_sidebar(v, doc) do
super
var by_kind = new PropertiesByKind.with_elements(mclass_inherited_mprops(v, doc))
- var summary = new TplList.with_classes(["list-unstyled"])
+ var summary = new UnorderedList
+ summary.css_classes.add "list-unstyled"
by_kind.sort_groups(v.name_sorter)
for g in by_kind.groups do tpl_sidebar_list(g, summary)
- sidebar.boxes.add new TplSideBox.with_content("All properties", summary)
+ sidebar.boxes.add new DocSideBox("All properties", summary)
+ sidebar.boxes.last.is_open = false
end
- private fun tpl_sidebar_list(mprops: PropertyGroup[MProperty], summary: TplList) do
+ private fun tpl_sidebar_list(mprops: PropertyGroup[MProperty], summary: UnorderedList) do
if mprops.is_empty then return
- var entry = new TplListItem.with_content(mprops.title)
- var list = new TplList.with_classes(["list-unstyled", "list-labeled"])
+ var list = new UnorderedList
+ list.css_classes.add "list-unstyled list-labeled"
for mprop in mprops do
list.add_li tpl_sidebar_item(mprop)
end
- entry.append list
- summary.elts.add entry
+ var content = new Template
+ content.add mprops.title
+ content.add list
+ var li = new ListItem(content)
+ summary.add_li li
end
- private fun tpl_sidebar_item(mprop: MProperty): TplListItem do
- var classes = mprop.intro.tpl_css_classes.to_a
+ private fun tpl_sidebar_item(mprop: MProperty): ListItem do
+ var classes = mprop.intro.css_classes
if not mprop_is_local(mprop) then
classes.add "inherit"
var cls_url = mprop.intro.mclassdef.mclass.nitdoc_url
- var def_url = "{cls_url}#{mprop.nitdoc_id}"
- var lnk = new TplLink(def_url, mprop.html_name)
+ var def_url = "{cls_url}#article:{mprop.nitdoc_id}.definition"
+ var lnk = new Link(def_url, mprop.html_name)
var mdoc = mprop.intro.mdoc_or_fallback
if mdoc != null then lnk.title = mdoc.short_comment
var item = new Template
- item.add new TplLabel.with_classes(classes)
+ item.add new DocHTMLLabel.with_classes(classes)
item.add lnk
- return new TplListItem.with_content(item)
+ return new ListItem(item)
end
if mpropdefs.has(mprop.intro) then
classes.add "intro"
else
classes.add "redef"
end
+ var def = select_mpropdef(mprop)
+ var anc = def.html_link_to_anchor
+ anc.href = "#article:{def.nitdoc_id}.definition"
var lnk = new Template
- lnk.add new TplLabel.with_classes(classes)
- lnk.add mprop.tpl_anchor
- return new TplListItem.with_content(lnk)
+ lnk.add new DocHTMLLabel.with_classes(classes)
+ lnk.add anc
+ return new ListItem(lnk)
+ end
+
+ # Get the mpropdef contained in `self` page for a mprop.
+ #
+ # FIXME this method is used to translate a mprop into a mpropdefs for
+ # section linking. A better page structure should avoid this...
+ private fun select_mpropdef(mprop: MProperty): MPropDef do
+ for mclassdef in mentity.mclassdefs do
+ for mpropdef in mclassdef.mpropdefs do
+ if mpropdef.mproperty == mprop then return mpropdef
+ end
+ end
+ abort # FIXME is there a case where the prop is not found?
end
private fun mclass_inherited_mprops(v: RenderHTMLPhase, doc: DocModel): Set[MProperty] do
redef class MPropertyPage
redef fun init_title(v, doc) do
- title = "{mentity.html_name}{mentity.tpl_signature.write_to_string}"
+ title = "{mentity.html_name}{mentity.html_short_signature.write_to_string}"
end
redef fun init_topmenu(v, doc) do
end
redef class DocComposite
- # Render this DocComposite as HTML.
+ # Prepares the HTML rendering for this element.
#
- # FIXME needed to maintain TplSection compatibility.
- fun render(v: RenderHTMLPhase, doc: DocModel, page: MEntityPage, parent: TplSectionElt) is abstract
+ # This visit is mainly used to set template attributes before rendering.
+ fun init_html_render(v: RenderHTMLPhase, doc: DocModel, page: DocPage) do
+ for child in children do child.init_html_render(v, doc, page)
+ end
end
-redef class DocRoot
-
- # Start the rendering from root.
- #
- # FIXME needed to maintain TplSection compatibility.
- fun start_rendering(v: RenderHTMLPhase, doc: DocModel, page: MEntityPage): TplSection do
- var section = new TplSection("top")
- var mentity = page.mentity
- section.title = mentity.html_name
- section.subtitle = mentity.tpl_declaration
- # FIXME ugly hack to avoid diff
+# FIXME hideous hacks to avoid diff
+redef class MEntitySection
+ redef fun init_html_render(v, doc, page) do
+ if not page isa MEntityPage then return
+ var mentity = self.mentity
if mentity isa MGroup and mentity.is_root then
- section.title = mentity.mproject.html_name
- section.subtitle = mentity.mproject.tpl_declaration
+ html_title = mentity.mproject.html_name
+ html_subtitle = mentity.mproject.html_declaration
else if mentity isa MProperty then
- section.title = "{mentity.html_name}{mentity.intro.tpl_signature.write_to_string}"
- section.subtitle = mentity.tpl_namespace
- section.summary_title = mentity.html_name
- end
- render(v, doc, page, section)
- return section
- end
-
- redef fun render(v, doc, page, parent) do
- for child in children do
- child.render(v, doc, page, parent)
+ var title = new Template
+ title.add mentity.html_name
+ title.add mentity.html_signature
+ html_title = title
+ html_subtitle = mentity.html_namespace
+ toc_title = mentity.html_name
end
+ super
end
end
+# FIXME hideous hacks to avoid diff
redef class ConcernSection
- redef fun render(v, doc, page, parent) do
- var section = new TplSection(mentity.nitdoc_id)
+ redef fun init_html_render(v, doc, page) do
+ if not page isa MEntityPage then return
var mentity = self.mentity
- # FIXME hideous hacks to avoid diff
- if page.mentity isa MModule and mentity isa MModule then
- render_concern_mmodule(page, section, mentity)
- else if page.mentity isa MClass and mentity isa MModule then
- render_concern_other(page, section, mentity)
- else if page.mentity isa MProperty and mentity isa MModule then
- render_concern_other(page, section, mentity)
- end
- for child in children do
- child.render(v, doc, page, section)
- end
- parent.add_child section
- end
-
- private fun render_concern_mmodule(page: MEntityPage, section: TplSection, mmodule: MModule) do
- var title = new Template
- if mmodule == page.mentity then
+ if page isa MGroupPage then
+ html_title = null
+ toc_title = mentity.html_name
+ is_toc_hidden = false
+ else if page.mentity isa MModule and mentity isa MModule then
+ var title = new Template
+ if mentity == page.mentity then
+ title.add "in "
+ toc_title = "in {mentity.html_name}"
+ else
+ title.add "from "
+ toc_title = "from {mentity.html_name}"
+ end
+ title.add mentity.html_namespace
+ html_title = title
+ else if (page.mentity isa MClass and mentity isa MModule) or
+ (page.mentity isa MProperty and mentity isa MModule) then
+ var title = new Template
title.add "in "
- section.summary_title = "in {mmodule.html_name}"
- else
- title.add "from "
- section.summary_title = "from {mmodule.html_name}"
+ title.add mentity.html_namespace
+ html_title = title
+ toc_title = "in {mentity.html_name}"
end
- title.add mmodule.tpl_namespace
- section.title = title
- end
-
- private fun render_concern_other(page: MEntityPage, section: TplSection, mmodule: MModule) do
- var title = new Template
- title.add "in "
- title.add mmodule.tpl_namespace
- section.title = title
- section.summary_title = "in {mmodule.html_name}"
- end
-end
-
-redef class MEntitySection
- redef fun render(v, doc, page, parent) do
- for child in children do child.render(v, doc, page, parent)
+ super
end
end
+# TODO redo showlink
redef class IntroArticle
- redef fun render(v, doc, page, parent) do
- var article = new TplArticle("intro")
+ redef fun init_html_render(v, doc, page) do
var mentity = self.mentity
if mentity isa MModule then
- article.source_link = v.tpl_showsource(mentity.location)
+ html_source_link = v.html_source_link(mentity.location)
else if mentity isa MClassDef then
- article.source_link = v.tpl_showsource(mentity.location)
+ html_source_link = v.html_source_link(mentity.location)
else if mentity isa MPropDef then
- article.source_link = v.tpl_showsource(mentity.location)
+ html_source_link = v.html_source_link(mentity.location)
end
- # article.subtitle = mentity.tpl_declaration
- # FIXME diff hack
- if mentity isa MProperty then
- # intro title
- var ns = mentity.intro.mclassdef.mmodule.tpl_namespace
- var section = new TplSection("intro")
- var title = new Template
- title.add "Introduction in "
- title.add ns
- section.title = title
- section.summary_title = "Introduction"
- var intro = mentity.intro.tpl_article
- intro.source_link = v.tpl_showsource(mentity.intro.location)
- section.add_child intro
- parent.add_child section
- else
- article.content = mentity.tpl_definition
- parent.add_child article
- end
- end
-end
-
-redef class ConcernsArticle
- redef fun render(v, doc, page, parent) do
- # FIXME diff hack
- var title = "concerns"
- if page.mentity isa MProperty then title = "Concerns"
- parent.add_child new TplArticle.
- with_content(title, "Concerns", concerns.to_tpl)
end
end
+# FIXME less hideous hacks...
redef class DefinitionArticle
- redef fun render(v, doc, page, parent) do
- var article: TplArticle
+ redef fun init_html_render(v, doc, page) do
var mentity = self.mentity
- # FIXME hideous hacks...
- if mentity isa MModule then
- article = mentity.tpl_article
- article.subtitle = mentity.tpl_declaration
- article.content = mentity.tpl_definition
- else if mentity isa MClass then
- article = make_mclass_article(v, page)
- else if mentity isa MClassDef then
- article = make_mclassdef_article(v, page)
- article.source_link = v.tpl_showsource(mentity.location)
- else if mentity isa MPropDef and page.mentity isa MClass then
- article = make_mpropdef_article(v, doc, page)
- else
- article = mentity.tpl_article
- article.subtitle = mentity.tpl_declaration
- if mentity isa MPropDef then
- article.source_link = v.tpl_showsource(mentity.location)
- end
- if not mentity isa MVirtualTypeProp then
- # article.content = mentity.tpl_comment
- end
- end
- for child in children do
- child.render(v, doc, page, article)
- end
- parent.add_child article
- end
-
- # FIXME avoid diff while preserving TplArticle compatibility.
-
- private fun make_mclass_article(v: RenderHTMLPhase, page: MEntityPage): TplArticle do
- var article = mentity.tpl_article
- article.subtitle = mentity.tpl_namespace
- article.content = null
- return article
- end
-
- private fun make_mclassdef_article(v: RenderHTMLPhase, page: MEntityPage): TplArticle do
- var mclassdef = mentity.as(MClassDef)
- var article = mentity.tpl_article
- if mclassdef.is_intro and mclassdef.mmodule != page.mentity then
- article = mentity.tpl_short_article
- end
- var title = new Template
- title.add "in "
- title.add mclassdef.mmodule.tpl_namespace
- article.subtitle = title
- return article
- end
-
- private fun make_mpropdef_article(v: RenderHTMLPhase, doc: DocModel, page: MEntityPage): TplArticle
- do
- var mpropdef = mentity.as(MPropDef)
- var mprop = mpropdef.mproperty
- var article = new TplArticle(mprop.nitdoc_id)
- var title = new Template
- title.add mprop.tpl_icon
- title.add "<span id='{mpropdef.nitdoc_id}'></span>"
- if mpropdef.is_intro then
- title.add mprop.tpl_link
- title.add mprop.intro.tpl_signature
- else
- var cls_url = mprop.intro.mclassdef.mclass.nitdoc_url
- var def_url = "{cls_url}#{mprop.nitdoc_id}"
- var lnk = new TplLink.with_title(def_url, mprop.html_name,
- "Go to introduction")
- title.add "redef "
- title.add lnk
- end
- article.title = title
- article.title_classes.add "signature"
- article.summary_title = "{mprop.html_name}"
- article.subtitle = mpropdef.tpl_namespace
- if mpropdef.mdoc_or_fallback != null then
- article.content = mpropdef.mdoc_or_fallback.tpl_comment
- end
- # TODO move in its own phase? let's see after doc_template refactoring.
- # Add linearization
- var all_defs = new HashSet[MPropDef]
- for local_def in local_defs(page.as(MClassPage), mprop) do
- all_defs.add local_def
- var smpropdef = local_def
- while not smpropdef.is_intro do
- smpropdef = smpropdef.lookup_next_definition(
- doc.mainmodule, smpropdef.mclassdef.bound_mtype)
- all_defs.add smpropdef
+ if mentity isa MProject or mentity isa MModule then
+ var title = new Template
+ title.add mentity.html_icon
+ title.add mentity.html_namespace
+ html_title = title
+ toc_title = mentity.html_name
+ if mentity isa MModule then
+ html_source_link = v.html_source_link(mentity.location)
end
- end
- var lin = all_defs.to_a
- doc.mainmodule.linearize_mpropdefs(lin)
- if lin.length > 1 then
- var lin_article = new TplArticle("{mpropdef.nitdoc_id}.lin")
- lin_article.title = "Inheritance"
- var lst = new TplList.with_classes(["list-unstyled", "list-labeled"])
- for smpropdef in lin do
- lst.add_li smpropdef.tpl_inheritance_item
+ else if mentity isa MClassDef then
+ var title = new Template
+ title.add "in "
+ title.add mentity.mmodule.html_namespace
+ html_title = mentity.html_declaration
+ html_subtitle = title
+ toc_title = "in {mentity.html_name}"
+ html_source_link = v.html_source_link(mentity.location)
+ if page isa MEntityPage and mentity.is_intro and mentity.mmodule != page.mentity then
+ is_short_comment = true
end
- lin_article.content = lst
- article.add_child lin_article
- end
- return article
- end
-
- # Filter `page.mpropdefs` for this `mpropertie`.
- #
- # FIXME compatability with current templates.
- private fun local_defs(page: MClassPage, mproperty: MProperty): HashSet[MPropDef] do
- var mpropdefs = new HashSet[MPropDef]
- for mpropdef in page.mpropdefs do
- if mpropdef.mproperty == mproperty then
- mpropdefs.add mpropdef
+ if page isa MModulePage then is_toc_hidden = true
+ else if mentity isa MPropDef then
+ if page isa MClassPage then
+ var title = new Template
+ title.add mentity.html_icon
+ title.add mentity.html_declaration
+ html_title = title
+ html_subtitle = mentity.html_namespace
+ toc_title = mentity.html_name
+ else
+ var title = new Template
+ title.add "in "
+ title.add mentity.mclassdef.html_link
+ html_title = title
+ toc_title = "in {mentity.mclassdef.html_name}"
end
+ html_source_link = v.html_source_link(mentity.location)
end
- return mpropdefs
- end
-end
-
-redef class IntrosRedefsListArticle
- redef fun render(v, doc, page, parent) do
- if mentities.is_empty then return
- var title = list_title
- # FIXME diff hack
- var id = "intros"
- if title == "Redefines" then id = "redefs"
- var article = new TplArticle.with_title("{mentity.nitdoc_id}.{id}", title)
- var list = new TplList.with_classes(["list-unstyled", "list-labeled"])
- for mentity in mentities do
- list.add_li mentity.tpl_list_item
+ if page isa MGroupPage and mentity isa MModule then
+ is_toc_hidden = true
end
- article.content = list
- parent.add_child article
- end
-end
-
-# FIXME compatibility with doc_templates.
-redef class ImportationListSection
- redef fun render(v, doc, page, parent) do
- var section = new TplSection.with_title("dependencies", "Dependencies")
- for child in children do
- child.render(v, doc, page, section)
- end
- parent.add_child section
- end
-end
-
-# FIXME compatibility with doc_templates.
-redef class InheritanceListSection
- redef fun render(v, doc, page, parent) do
- var section = new TplSection.with_title("inheritance", "Inheritance")
- for child in children do
- child.render(v, doc, page, section)
- end
- parent.add_child section
+ super
end
end
-# FIXME compatibility with doc_templates.
-redef class HierarchyListArticle
- redef fun render(v, doc, page, parent) do
- if mentities.is_empty then return
- var title = list_title
- var id = list_title.to_lower
- var article = new TplArticle.with_title(id, title)
- var list = new TplList.with_classes(["list-unstyled", "list-definition"])
- for mentity in mentities do
- list.elts.add mentity.tpl_list_item
+redef class HomeArticle
+ redef fun init_html_render(v, doc, page) do
+ if v.ctx.opt_custom_title.value != null then
+ self.html_title = v.ctx.opt_custom_title.value.to_s
+ self.toc_title = v.ctx.opt_custom_title.value.to_s
end
- article.content = list
- parent.add_child article
+ self.content = v.ctx.opt_custom_intro.value
+ super
end
end
redef class GraphArticle
- redef fun render(v, doc, page, parent) do
+ redef fun init_html_render(v, doc, page) do
var output_dir = v.ctx.output_dir
var path = output_dir / id
var path_sh = path.escape_to_sh
file.close
sys.system("\{ test -f {path_sh}.png && test -f {path_sh}.s.dot && diff -- {path_sh}.dot {path_sh}.s.dot >/dev/null 2>&1 ; \} || \{ cp -- {path_sh}.dot {path_sh}.s.dot && dot -Tpng -o{path_sh}.png -Tcmapx -o{path_sh}.map {path_sh}.s.dot ; \}")
var fmap = new FileReader.open("{path}.map")
- var map = fmap.read_all
+ self.map = fmap.read_all
fmap.close
-
- var article = new TplArticle("graph")
- var alt = ""
- # FIXME diff hack
- # if title != null then
- # article.title = title
- # alt = "alt='{title.html_escape}'"
- # end
- article.css_classes.add "text-center"
- var content = new Template
- var name_html = id.html_escape
- content.add "<img src='{name_html}.png' usemap='#{name_html}' style='margin:auto' {alt}/>"
- content.add map
- article.content = content
- parent.add_child article
end
end
if not doc.mpropdefs.has(mpropdef) then continue
var full_name = mpropdef.mclassdef.mclass.full_name
var cls_url = mpropdef.mclassdef.mclass.nitdoc_url
- var def_url = "{cls_url}#{mpropdef.mproperty.nitdoc_id}"
+ var def_url = "{cls_url}#article:{mpropdef.nitdoc_id}.definition"
add_result_for(mproperty.name, full_name, def_url)
end
end
--- /dev/null
+# 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 linearization lists to DefinitionArticle found in MClass pages.
+module doc_lin
+
+import doc_structure
+
+# LinPhase populates the DocPage content with linearization data.
+class LinListPhase
+ super DocPhase
+
+ # Used to sort list by linearization order
+ private var lin_sorter = new MEntityNameSorter
+
+ redef fun apply do
+ for page in doc.pages do page.apply_linearization(self, doc)
+ end
+end
+
+redef class DocPage
+
+ # Populates `self` with linearization data.
+ #
+ # See `LinListPhase`.
+ fun apply_linearization(v: LinListPhase, doc: DocModel) do end
+end
+
+redef class MClassPage
+ redef fun apply_linearization(v, doc) do
+ root.apply_linearization(v, doc, self)
+ end
+end
+
+redef class DocComposite
+
+ # Populates `self` with linearization data.
+ #
+ # For now, it's only used for mpropdefs linearization in MClassPage.
+ #
+ # See `LinListPhase`.
+ private fun apply_linearization(v: LinListPhase, doc: DocModel, page: DocPage) do
+ for child in children do child.apply_linearization(v, doc, page)
+ end
+end
+
+redef class DefinitionArticle
+ redef fun apply_linearization(v, doc, page) do
+ var mentity = self.mentity
+ if not mentity isa MPropDef then return
+ # Add linearization
+ var all_defs = new HashSet[MPropDef]
+ for local_def in local_defs(page.as(MClassPage), mentity.mproperty) do
+ all_defs.add local_def
+ var smpropdef = local_def
+ while not smpropdef.is_intro do
+ smpropdef = smpropdef.lookup_next_definition(
+ doc.mainmodule, smpropdef.mclassdef.bound_mtype)
+ all_defs.add smpropdef
+ end
+ end
+ var lin = all_defs.to_a
+ doc.mainmodule.linearize_mpropdefs(lin)
+ if lin.length > 1 then
+ add_child new DefinitionLinArticle(mentity, lin)
+ end
+ end
+
+ # Filter `page.mpropdefs` for this `mpropertie`.
+ #
+ # FIXME compatability with current templates.
+ private fun local_defs(page: MClassPage, mproperty: MProperty): HashSet[MPropDef] do
+ var mpropdefs = new HashSet[MPropDef]
+ for mpropdef in page.mpropdefs do
+ if mpropdef.mproperty == mproperty then
+ mpropdefs.add mpropdef
+ end
+ end
+ return mpropdefs
+ end
+end
+
+# Display a linearized list of definitions.
+class DefinitionLinArticle
+ super MEntityArticle
+
+ # The linearized list to display.
+ var mentities: Array[MEntity]
+end
# Populates the given DocModel.
redef fun apply do
- for page in doc.pages do
- if page isa MEntityPage then page.apply_structure(self, doc)
- end
+ for page in doc.pages do page.apply_structure(self, doc)
end
-
- # TODO index and search page should also be structured here
end
-redef class MEntityPage
+redef class DocPage
# Populates `self` with structure elements like DocComposite ones.
#
fun apply_structure(v: StructurePhase, doc: DocModel) do end
end
+redef class OverviewPage
+ redef fun apply_structure(v, doc) do
+ var article = new HomeArticle
+ root.add_child article
+ # Projects list
+ var mprojects = doc.model.mprojects.to_a
+ var sorter = new MConcernRankSorter
+ sorter.sort mprojects
+ var section = new ProjectsSection
+ for mproject in mprojects do
+ section.add_child new DefinitionArticle(mproject)
+ end
+ article.add_child section
+ end
+end
+
+redef class SearchPage
+ redef fun apply_structure(v, doc) do
+ var mmodules = doc.mmodules.to_a
+ v.name_sorter.sort(mmodules)
+ var mclasses = doc.mclasses.to_a
+ v.name_sorter.sort(mclasses)
+ var mprops = doc.mproperties.to_a
+ v.name_sorter.sort(mprops)
+ root.add_child new IndexArticle(mmodules, mclasses, mprops)
+ end
+end
+
redef class MGroupPage
redef fun apply_structure(v, doc) do
var section = new MEntitySection(mentity)
mentity.booster_rank = 0
section.add_child new ConcernsArticle(mentity, concerns)
for mentity in concerns do
+ var ssection = new ConcernSection(mentity)
if mentity isa MModule then
- section.add_child new DefinitionArticle(mentity)
- else
- section.add_child new ConcernSection(mentity)
+ ssection.add_child new DefinitionArticle(mentity)
end
+ section.add_child ssection
end
end
end
var mclasses = mclasses_for_mmodule(mentity).to_a
v.name_sorter.sort(mclasses)
for mclass in mclasses do
- var article = new DefinitionArticle(mclass)
+ var article = new DefinitionListArticle(mclass)
var mclassdefs = mclassdefs_for(mclass).to_a
if not mclassdefs.has(mclass.intro) then
article.add_child(new DefinitionArticle(mclass.intro))
var concerns: ConcernsTree
end
+# An article that displaus a list of definition belonging to a MEntity.
+class DefinitionListArticle
+ super MEntityArticle
+end
+
# An article that display the definition text of a MEntity.
class DefinitionArticle
super MEntityArticle
end
+
+# The main project article.
+class HomeArticle
+ super DocArticle
+end
+
+# The project list.
+class ProjectsSection
+ super DocArticle
+end
+
+# An article that display an index of mmodules, mclasses and mproperties.
+class IndexArticle
+ super DocArticle
+
+ # List of mmodules to display.
+ var mmodules: Array[MModule]
+
+ # List of mclasses to display.
+ var mclasses: Array[MClass]
+
+ # List of mproperties to display.
+ var mprops: Array[MProperty]
+end
module html_components
import doc_base
-import template
+import html::bootstrap
import json::static
-#########################
-# general layout elements
-#########################
+# A label with a text content.
+class DocHTMLLabel
+ super BSLabel
-# A sidebar template
-class TplSidebar
- super Template
-
- # Sidebar contains sidebar element templates called boxes
- var boxes = new Array[TplSidebarElt]
-
- # Sort boxes by order priority
- private fun order_boxes do
- var sorter = new OrderComparator
- sorter.sort(boxes)
- end
-
- redef fun rendering do
- if boxes.is_empty then return
- order_boxes
- addn "<div id='sidebar'>"
- for box in boxes do add box
- addn "</div>"
- end
-end
-
-# Comparator used to sort boxes by order
-private class OrderComparator
- super Comparator
-
- redef type COMPARED: TplSidebarElt
-
- redef fun compare(a, b) do
- if a.order < b.order then return -1
- if a.order > b.order then return 1
- return 0
- end
-end
-
-# Something that can be put in the sidebar
-class TplSidebarElt
- super Template
-
- # Order of the box in the sidebar
- var order: Int = 1
-
- init with_order(order: Int) do self.order = order
-end
-
-# Agenericbox that can be added to sidebar
-class TplSideBox
- super TplSidebarElt
-
- # Title of the box to display
- # Title is also a placeholder for the collapse link
- var title: String
-
- # Box HTML id
- # equals to `title.to_cmangle` by default
- # Used for collapsing
- var id: String is noinit
-
- # Content to display in the box
- # box will not be rendered if the content is null
- var content: nullable Writable = null is writable
-
- # Is the box opened by default
- # otherwise, the user will have to clic on the title to display the content
- var is_open = false is writable
-
- init do
- self.id = title.to_cmangle
- end
-
- init with_content(title: String, content: Writable) do
- init(title)
- self.content = content
- end
-
- redef fun rendering do
- if content == null then return
- var open = ""
- if is_open then open = "in"
- addn "<div class='panel'>"
- addn " <div class='panel-heading'>"
- add " <a data-toggle='collapse' data-parent='#sidebar' data-target='#box_{id}' href='#'>"
- add title
- addn " </a>"
- addn " </div>"
- addn " <div id='box_{id}' class='panel-body collapse {open}'>"
- add content.as(not null)
- addn " </div>"
- addn "</div>"
- end
-end
-
-# Something that can go on a summary template
-class TplSummaryElt
- super Template
-
- # Add an element to the summary
- fun add_child(child: TplSummaryElt) is abstract
-end
-
-# A summary that can go on the sidebar
-# If the page contains a sidebar, the summary is automatically placed
-# on top of the sidebarauto-generated
-# summary contains anchors to all sections displayed in the page
-class TplSummary
- super TplSidebarElt
- super TplSummaryElt
-
- # Summary elements to display
- var children = new Array[TplSummaryElt]
-
- redef fun add_child(child) do children.add child
-
- redef fun rendering do
- if children.is_empty then return
- addn "<div class='panel'>"
- addn " <div class='panel-heading'>"
- add " <a data-toggle='collapse' data-parent='#sidebar' data-target='#box-sum' href='#'>"
- add "Summary"
- addn " </a>"
- addn " </div>"
- addn " <div id='box-sum' class='summary collapse in'>"
- addn " <ul class='nav'>"
- for entry in children do add entry
- addn " </ul>"
- addn " </div>"
- addn "</div>"
- end
-end
-
-# A summary entry
-class TplSummaryEntry
- super TplSummaryElt
-
- # Text to display
- var text: Writable
-
- # Children of this entry
- # Will be displayed as a tree
- var children = new Array[TplSummaryElt]
-
- redef fun add_child(child) do children.add child
-
- redef fun rendering do
- add "<li>"
- add text
- if not children.is_empty then
- addn "\n<ul class='nav'>"
- for entry in children do add entry
- addn "</ul>"
- end
- addn "</li>"
- end
-end
-
-# Something that can go in a section
-# Sections are automatically collected to populate the menu
-class TplSectionElt
- super Template
-
- # HTML anchor id
- var id: String
-
- # Title to display if any
- # if both `title` and `summary_title` are null then
- # the section will not appear in the summary
- var title: nullable Writable = null is writable
-
- # Subtitle to display if any
- var subtitle: nullable Writable = null is writable
-
- # Title that appear in the summary
- # if null use `title` instead
- var summary_title: nullable String = null is writable
-
- # CSS classes to apply on the section element
- var css_classes = new Array[String]
-
- # CSS classes to apply on the title heading element
- var title_classes = new Array[String]
-
- # Parent article/section if any
- var parent: nullable TplSectionElt = null
-
- init with_title(id: String, title: Writable) do
- init(id)
- self.title = title
- end
-
- # Level <hX> for HTML heading
- protected fun hlvl: Int do
- if parent == null then return 1
- return parent.hlvl + 1
- end
-
- # Elements contained by this section
- var children = new Array[TplSectionElt]
-
- # Add an element in this section
- fun add_child(child: TplSectionElt) do
- child.parent = self
- children.add child
- end
-
- # Is the section empty (no content at all)
- fun is_empty: Bool do return children.is_empty
-
- # Render this section in the summary
- fun render_summary(parent: TplSummaryElt) do
- if is_empty then return
- var title = summary_title
- if title == null and self.title != null then title = self.title.write_to_string
- if title == null then return
- var lnk = new TplLink("#{id}", title)
- var entry = new TplSummaryEntry(lnk)
- for child in children do
- child.render_summary(entry)
- end
- parent.add_child entry
- end
-end
-
-# A HTML <section> element
-class TplSection
- super TplSectionElt
-
- redef fun rendering do
- addn "<section id='{id}' class='{css_classes.join(" ")}'>"
- if title != null then
- var lvl = hlvl
- if lvl == 2 then title_classes.add "well well-sm"
- addn "<h{lvl} class='{title_classes.join(" ")}'>"
- addn title.as(not null)
- addn "</h{lvl}>"
- end
- if subtitle != null then
- addn "<div class='info subtitle'>"
- addn subtitle.as(not null)
- addn "</div>"
- end
- for child in children do
- add child
- end
- addn "</section>"
- end
-end
-
-# A page article that can go in a section
-class TplArticle
- super TplSectionElt
-
- # Content for this article
- var content: nullable Writable = null is writable
- var source_link: nullable Writable = null is writable
-
- init with_content(id: String, title: Writable, content: Writable) do
- with_title(id, title)
- self.content = content
- end
-
- redef fun render_summary(parent) do
- if is_empty then return
- var title = summary_title
- if title == null and self.title != null then title = self.title.write_to_string
- if title == null then return
- var lnk = new TplLink("#{id}", title)
- parent.add_child new TplSummaryEntry(lnk)
- end
-
- redef fun rendering do
- if is_empty then return
- addn "<article id='{id}' class='{css_classes.join(" ")}'>"
- if source_link != null then
- add "<div class='source-link'>"
- add source_link.as(not null)
- addn "</div>"
- end
- if title != null then
- var lvl = hlvl
- if lvl == 2 then title_classes.add "well well-sm"
- add "<h{lvl} class='{title_classes.join(" ")}'>"
- add title.as(not null)
- addn "</h{lvl}>"
- end
- if subtitle != null then
- add "<div class='info subtitle'>"
- add subtitle.as(not null)
- addn "</div>"
- end
- if content != null then
- add content.as(not null)
- end
- for child in children do
- add child
- end
- addn """</article>"""
- end
-
- redef fun is_empty: Bool do
- return title == null and subtitle == null and content == null and children.is_empty
- end
-end
-
-# A module / class / prop definition
-class TplDefinition
- super Template
-
- # Comment to display
- var comment: nullable Writable = null is writable
-
- # Namespace for this definition
- var namespace: nullable Writable = null is writable
-
- # Location link to display
- var location: nullable Writable = null is writable
-
- private fun render_info do
- addn "<div class='info text-right'>"
- if namespace != null then
- if comment == null then
- add "<span class=\"noComment\">no comment for </span>"
- end
- add namespace.as(not null)
- end
- if location != null then
- add " "
- add location.as(not null)
- end
- addn "</div>"
- end
-
- private fun render_comment do
- if comment != null then add comment.as(not null)
- end
-
- redef fun rendering do
- addn "<div class='definition'>"
- render_comment
- render_info
- addn "</div>"
- end
-end
-
-# Class definition
-class TplClassDefinition
- super TplDefinition
-
- var intros = new Array[TplListElt]
- var redefs = new Array[TplListElt]
-
- redef fun rendering do
- addn "<div class='definition'>"
- render_comment
- render_info
- render_list("Introduces", intros)
- render_list("Redefines", redefs)
- addn "</div>"
+ redef init do
+ css_classes.clear
+ css_classes.add "label"
end
- private fun render_list(name: String, elts: Array[TplListElt]) do
- if elts.is_empty then return
- addn "<h5>{name.html_escape}</h5>"
- addn "<ul class='list-unstyled list-definition'>"
- for elt in elts do add elt
- addn "</ul>"
- end
-end
-
-# Layout for Search page
-class TplSearchPage
- super TplSectionElt
-
- var modules = new Array[Writable]
- var classes = new Array[Writable]
- var props = new Array[Writable]
-
- redef fun rendering do
- var title = self.title
- if title != null then addn "<h1>{title.to_s.html_escape}</h1>"
- addn "<div class='container-fluid'>"
- addn " <div class='row'>"
- if not modules.is_empty then
- addn "<div class='col-xs-4'>"
- addn "<h3>Modules</h3>"
- addn "<ul>"
- for m in modules do
- add "<li>"
- add m
- addn "</li>"
- end
- addn "</ul>"
- addn "</div>"
- end
- if not classes.is_empty then
- addn "<div class='col-xs-4'>"
- addn "<h3>Classes</h3>"
- addn "<ul>"
- for c in classes do
- add "<li>"
- add c
- addn "</li>"
- end
- addn "</ul>"
- addn "</div>"
- end
- if not props.is_empty then
- addn "<div class='col-xs-4'>"
- addn "<h3>Properties</h3>"
- addn "<ul>"
- for p in props do
- add "<li>"
- add p
- addn "</li>"
- end
- addn "</ul>"
- addn "</div>"
- end
- addn " </div>"
- addn "</div>"
- end
-end
-
-#####################
-# Basiv HTML elements
-#####################
-
-# A html link <a>
-class TplLink
- super Template
-
- # Link href
- var href: String is writable
-
- # The raw HTML content to display in the link
- var text: Writable is writable
-
- # The unescaped optional title.
- var title: nullable String = null is writable
-
- init with_title(href, text, title: String) do
- init(href, text)
- self.title = title
- end
-
- redef fun rendering do
- add "<a href=\""
- add href.html_escape
- add "\""
- if title != null then
- add " title=\""
- add title.as(not null).html_escape
- add "\""
- end
- add ">"
- add text
- add "</a>"
- end
-end
-
-# A <ul> list
-class TplList
- super TplListElt
-
- # Elements contained in this list
- # can be <li> or <ul> elements
- var elts = new Array[TplListElt]
-
- # CSS classes of the <ul> element
- var css_classes = new Array[String]
-
- # Add content wrapped in a <li> element
- fun add_li(item: TplListItem) do elts.add item
-
- init with_classes(classes: Array[String]) do self.css_classes = classes
-
- fun is_empty: Bool do return elts.is_empty
-
- redef fun rendering do
- if elts.is_empty then return
- addn "<ul class='{css_classes.join(" ")}'>"
- for elt in elts do add elt
- addn "</ul>"
- end
-end
-
-# Something that can be added to a TplList
-class TplListElt
- super Template
-end
-
-# A list item <li>
-class TplListItem
- super TplListElt
-
- # Content of the list item
- var content = new Template
-
- # CSS classes of the <li> element
- var css_classes = new Array[String]
-
- init with_content(content: Writable) do append(content)
-
- init with_classes(content: Writable, classes: Array[String]) do
- with_content(content)
- css_classes = classes
- end
-
- # Append `content` to the item
- # similar to `self.content.add`
- fun append(content: Writable) do self.content.add content
-
- redef fun rendering do
- add "<li class='{css_classes.join(" ")}'>"
- add content
- addn "</li>"
- end
-end
-
-# A Bootstrap tab component that contains `TplTabPanel`.
-class TplTab
- super Template
-
- # Panels contained in the tab.
- var panels = new Array[TplTabPanel]
-
- # Add a new panel.
- fun add_panel(panel: TplTabPanel) do panels.add panel
-
- # CSS classes of the tab component.
- var css_classes = new Array[String]
-
- redef fun rendering do
- addn "<div class='tab-content'>"
- for panel in panels do add panel
- addn "</div>"
- end
-end
-
-# A panel that goes in a `TplTab`.
-class TplTabPanel
- super Template
-
- # CSS classes of the pane element.
- var css_classes = new Array[String]
-
- # The panel id.
- #
- # Used to show/hide panel.
- var id: String is noinit
-
- # The panel name.
- #
- # Displayed in the tab header or in the pointing link.
- var name: Writable
-
- # Is the panel visible by default?
- var is_active = false is writable
-
- # Body of the panel
- var content: nullable Writable = null is writable
-
- # Get a link pointing to this panel.
- fun tpl_link_to: Writable do
- var lnk = new Template
- lnk.add "<a data-target='#{id}' data-toggle='pill'>"
- lnk.add name
- lnk.add "</a>"
- return lnk
- end
-
- redef fun rendering do
- add "<div class='tab-pane {css_classes.join(" ")}"
- if is_active then add "active"
- addn "' id='{id}'>"
- if content != null then add content.as(not null)
- addn "</div>"
- end
-end
-
-# A label with a text content
-class TplLabel
- super Template
-
- # Content of the label if any
- var content: nullable Writable = null is writable
-
- # CSS classes of the <span> element
- var css_classes = new Array[String]
-
- init with_content(content: Writable) do self.content = content
- init with_classes(classes: Array[String]) do self.css_classes = classes
-
- redef fun rendering do
- add "<span class='label {css_classes.join(" ")}'>"
- if content != null then add content.as(not null)
- add "</span>"
- end
-end
-
-# A label with an icon
-class TplIcon
- super TplLabel
-
- # Bootsrap icon name
- # see: http://getbootstrap.com/components/#glyphicons
- var icon: String
-
- init with_icon(icon: String) do self.icon = icon
-
- redef fun rendering do
- add "<span class='glyphicon glyphicon-{icon} {css_classes.join(" ")}'>"
- if content != null then add content.as(not null)
- add "</span>"
+ # Init this label from css classes.
+ init with_classes(classes: Array[String]) do
+ init("label", "")
+ css_classes.add_all classes
end
end
end
end
-# Javacript template
+# Javacript template that can be added into a DocPage.
class TplScript
super Template
+ # HTML attributes to add in this tag.
var attrs = new Array[TagAttribute]
+
+ # Text content of this script tag.
var content: nullable Writable = null is writable
init do
attrs.add(new TagAttribute("type", "text/javascript"))
end
+ # Render the content of this script.
protected fun render_content do
if content != null then add content.as(not null)
end
class TplPiwikScript
super TplScript
+ # Piwik URL to use for this tracker.
var tracker_url: String
+
+ # Site ID used on Piwik system.
var site_id: String
redef fun render_content do
import doc_base
import doc_down
import html_components
+import html::bootstrap
import ordered_tree
-redef class Location
- # Github url based on this location
- fun github(gitdir: String): String do
- var base_dir = getcwd.join_path(gitdir).simplify_path
- var file_loc = getcwd.join_path(file.filename).simplify_path
- var gith_loc = file_loc.substring(base_dir.length + 1, file_loc.length)
- return "{gith_loc}:{line_start},{column_start}--{line_end},{column_end}"
- end
-end
-
redef class MEntity
# ID used as a HTML unique ID and in file names.
#
# * MPropdef: `foo(e)`
var html_name: String is lazy do return name.html_escape
- # A template link to the mentity `nitdoc_id`
- fun tpl_anchor: TplLink do
- var tpl = new TplLink("#{nitdoc_id}", html_name)
+ # Returns a Link to the mentity `html_url`.
+ #
+ # Example: `<a href="html_url" title="mdoc.short_comment">html_short_name</a>
+ var html_link: Link is lazy do
+ var tpl = new Link(nitdoc_url, html_name)
var mdoc = mdoc_or_fallback
if mdoc != null then
tpl.title = mdoc.short_comment
return tpl
end
- # A template link to the mentity `nitdoc_url`
- fun tpl_link: TplLink do
- var tpl = new TplLink(nitdoc_url, html_name)
+ # Returns a Link to the mentity `nitdoc_id`.
+ #
+ # Example: `<a href="#nitdoc_id" title="mdoc.short_comment">html_short_name</a>
+ fun html_link_to_anchor: Link do
+ var tpl = new Link("#{nitdoc_id}", html_name)
var mdoc = mdoc_or_fallback
if mdoc != null then
tpl.title = mdoc.short_comment
return tpl
end
- # A template article that briefly describe the entity
- fun tpl_short_article: TplArticle do
- var tpl = tpl_article
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.content = mdoc.tpl_short_comment
- end
- return tpl
- end
+ # Returns the list of keyword used in `self` declaration.
+ fun html_modifiers: Array[String] is abstract
- # A template article that describe the entity
- fun tpl_article: TplArticle do
- var tpl = new TplArticle.with_title(nitdoc_id, tpl_title)
- tpl.title_classes.add "signature"
- tpl.subtitle = tpl_namespace
- tpl.summary_title = html_name
+ # Returns the complete MEntity declaration decorated with HTML.
+ #
+ # * MProject: `project foo`
+ # * MGroup: `group foo`
+ # * MModule: `module foo`
+ # * MClass: `private abstract class Foo[E: Object]`
+ # * MClassDef: `redef class Foo[E]`
+ # * MProperty: `private fun foo(e: Object): Int`
+ # * MPropdef: `redef fun foo(e)`
+ fun html_declaration: Template do
+ var tpl = new Template
+ tpl.add "<span>"
+ tpl.add html_modifiers.join(" ")
+ tpl.add " "
+ tpl.add html_link
+ tpl.add "</span>"
return tpl
end
- # A template signature that contains modifiers and parameters
- fun tpl_declaration: Template is abstract
-
- # A template namespace
- fun tpl_namespace: Template is abstract
-
- # A template definition of the mentity
- # include name, sysnopsys, comment and namespace
- fun tpl_definition: TplDefinition is abstract
-
- # A li element that can go in a list
- fun tpl_list_item: TplListItem do
- var lnk = new Template
- lnk.add new TplLabel.with_classes(tpl_css_classes)
- lnk.add tpl_link
+ # Returns `self` namespace decorated with HTML links.
+ #
+ # * MProject: `mproject`
+ # * MGroup: `mproject(::group)`
+ # * MModule: `mgroup::mmodule`
+ # * MClass: `mproject::mclass`
+ # * MClassDef: `mmodule::mclassdef`
+ # * MProperty: `mclass::mprop`
+ # * MPropdef: `mclassdef:mpropdef`
+ fun html_namespace: Template is abstract
+
+ # Returns the comment of this MEntity formatted as HTML.
+ var html_comment: nullable Writable is lazy do
var mdoc = mdoc_or_fallback
- if mdoc != null then
- lnk.add ": "
- lnk.add mdoc.tpl_short_comment
- end
- return new TplListItem.with_content(lnk)
+ if mdoc == null then return null
+ return mdoc.tpl_comment
end
- var tpl_css_classes = new Array[String]
-
- # Box title for this mentity
- fun tpl_title: Template do
- var title = new Template
- title.add tpl_icon
- title.add tpl_namespace
- return title
+ # Returns the comment of this MEntity formatted as HTML.
+ var html_short_comment: nullable Writable is lazy do
+ var mdoc = mdoc_or_fallback
+ if mdoc == null then return null
+ return mdoc.tpl_short_comment
end
# Icon that will be displayed before the title
- fun tpl_icon: TplIcon do
- var icon = new TplIcon.with_icon("tag")
- icon.css_classes.add_all(tpl_css_classes)
+ fun html_icon: BSIcon do
+ var icon = new BSIcon("tag")
+ icon.css_classes.add_all(css_classes)
return icon
end
-end
-redef class MConcern
- # Return a li element for `self` that can be displayed in a concern list
- private fun tpl_concern_item: TplListItem do
- var lnk = new Template
- lnk.add tpl_anchor
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- lnk.add ": "
- lnk.add mdoc.tpl_short_comment
+ # CSS classes used to decorate `self`.
+ #
+ # Mainly used for icons.
+ var css_classes = new Array[String]
+
+ # A li element that can go in a `HTMLList`.
+ fun html_list_item: ListItem do
+ var tpl = new Template
+ tpl.add new DocHTMLLabel.with_classes(css_classes)
+ tpl.add html_link
+ var comment = html_short_comment
+ if comment != null then
+ tpl.add ": "
+ tpl.add comment
end
- return new TplListItem.with_content(lnk)
+ return new ListItem(tpl)
end
end
redef class MProject
redef var nitdoc_id = name.to_cmangle is lazy
redef fun nitdoc_url do return root.nitdoc_url
-
- redef fun tpl_declaration do
- var tpl = new Template
- tpl.add "<span>project "
- tpl.add tpl_link
- tpl.add "</span>"
- return tpl
- end
-
- redef fun tpl_namespace do return tpl_link
-
- redef fun tpl_definition do
- var tpl = new TplDefinition
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.comment = mdoc.tpl_comment
- end
- return tpl
- end
-
- redef fun tpl_css_classes do return ["public"]
+ redef var html_modifiers = ["project"]
+ redef fun html_namespace do return html_link
+ redef var css_classes = ["public"]
end
redef class MGroup
end
redef fun nitdoc_url do return "group_{nitdoc_id}.html"
+ redef var html_modifiers = ["group"]
- redef fun tpl_namespace do
+ # Depends if `self` is root or not.
+ #
+ # * If root `mproject`.
+ # * Else `mproject::self`.
+ redef fun html_namespace do
var tpl = new Template
- tpl.add mproject.tpl_namespace
+ tpl.add mproject.html_namespace
if mproject.root != self then
tpl.add "::"
- tpl.add tpl_link
+ tpl.add html_link
end
return tpl
end
- redef fun tpl_declaration do
- var tpl = new Template
- tpl.add "<span>group "
- tpl.add tpl_link
- tpl.add "</span>"
- return tpl
- end
-
- redef fun tpl_definition do
- var tpl = new TplDefinition
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.comment = mdoc.tpl_comment
- end
- return tpl
- end
+ redef var css_classes = ["public"]
end
redef class MModule
end
redef fun nitdoc_url do return "module_{nitdoc_id}.html"
+ redef var html_modifiers = ["module"]
- redef fun tpl_declaration do
- var tpl = new Template
- tpl.add "<span>module "
- tpl.add tpl_namespace
- tpl.add "</span>"
- return tpl
- end
-
- redef fun tpl_namespace do
+ # Depends if `self` belongs to a MGroup.
+ #
+ # * If mgroup `mgroup::self`.
+ # * Else `self`.
+ redef fun html_namespace do
var tpl = new Template
if mgroup != null then
- tpl.add mgroup.tpl_namespace
+ tpl.add mgroup.html_namespace
tpl.add "::"
end
- tpl.add tpl_link
- return tpl
- end
-
- redef fun tpl_definition do
- var tpl = new TplClassDefinition
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.comment = mdoc.tpl_comment
- end
+ tpl.add html_link
return tpl
end
- redef fun tpl_css_classes do return ["public"]
+ redef var css_classes = ["public"]
end
redef class MClass
return tpl.write_to_string
end
- redef fun tpl_declaration do return intro.tpl_declaration
- redef fun tpl_definition do return intro.tpl_definition
+ redef fun html_modifiers do return intro.html_modifiers
+ redef fun html_declaration do return intro.html_declaration
- redef fun tpl_namespace do
+ # Returns `mproject::self`.
+ redef fun html_namespace do
var tpl = new Template
- tpl.add intro_mmodule.mgroup.mproject.tpl_namespace
+ tpl.add intro_mmodule.mgroup.mproject.html_namespace
tpl.add "::<span>"
- tpl.add tpl_link
+ tpl.add html_link
tpl.add "</span>"
return tpl
end
- redef fun tpl_title do
- var title = new Template
- title.add tpl_icon
- title.add tpl_link
- return title
- end
+ # Returns `intro.html_short_signature`.
+ fun html_short_signature: Template do return intro.html_short_signature
- redef fun tpl_icon do return intro.tpl_icon
+ # Returns `intro.html_signature`.
+ fun html_signature: Template do return intro.html_signature
- fun tpl_signature: Template do
- var tpl = new Template
- if arity > 0 then
- tpl.add "["
- var parameter_names = new Array[String]
- for p in mparameters do
- parameter_names.add(p.html_name)
- end
- tpl.add parameter_names.join(", ")
- tpl.add "]"
- end
- return tpl
- end
-
- redef fun tpl_css_classes do return intro.tpl_css_classes
+ redef fun html_icon do return intro.html_icon
+ redef fun css_classes do return intro.css_classes
end
redef class MClassDef
redef var nitdoc_id = "{mmodule.nitdoc_id}__{name.to_cmangle}" is lazy
redef fun nitdoc_url do return "{mclass.nitdoc_url}#{nitdoc_id}"
-
redef fun mdoc_or_fallback do return mdoc or else mclass.mdoc_or_fallback
- redef fun tpl_namespace do
- var tpl = new Template
- tpl.add mmodule.tpl_namespace
- tpl.add "::<span>"
- tpl.add mclass.tpl_link
- tpl.add "</span>"
- return tpl
+ # Depends if `self` is an intro or not.
+ #
+ # * If intro contains the visibility and kind.
+ # * If redef contains the `redef` keyword and kind.
+ redef fun html_modifiers do
+ var res = new Array[String]
+ if not is_intro then
+ res.add "redef"
+ else
+ if mclass.visibility != public_visibility then
+ res.add mclass.visibility.to_s
+ end
+ end
+ res.add mclass.kind.to_s
+ return res
end
- redef fun tpl_article do
- var tpl = new TplArticle(nitdoc_id)
- tpl.summary_title = "in {mmodule.html_name}"
- tpl.title = tpl_declaration
- tpl.title_classes.add "signature"
- var title = new Template
- title.add "in "
- title.add mmodule.tpl_namespace
- tpl.subtitle = title
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.content = mdoc.tpl_comment
+ # Depends if `self` is an intro or not.
+ #
+ # For intro: `private abstract class Foo[E: Object]`
+ # For redef: `redef class Foo[E]`
+ redef fun html_declaration do
+ var tpl = new Template
+ tpl.add "<span>"
+ tpl.add html_modifiers.join(" ")
+ tpl.add " "
+ tpl.add html_link
+ if is_intro then
+ tpl.add html_signature
+ else
+ tpl.add html_short_signature
end
+ tpl.add "</span>"
return tpl
end
- redef fun tpl_title do
- var title = new Template
- title.add tpl_icon
- title.add tpl_link
- return title
- end
-
- redef fun tpl_declaration do
+ # Returns `mmodule::self`
+ redef fun html_namespace do
var tpl = new Template
- tpl.add tpl_modifiers
- tpl.add tpl_link
- tpl.add tpl_signature
+ tpl.add mmodule.html_namespace
+ tpl.add "::<span>"
+ tpl.add mclass.html_link
+ tpl.add "</span>"
return tpl
end
- fun tpl_signature: Template do
+ # Returns the MClassDef generic signature without static bounds.
+ fun html_short_signature: Template do
var tpl = new Template
var mparameters = mclass.mparameters
if not mparameters.is_empty then
tpl.add "["
for i in [0..mparameters.length[ do
- tpl.add "{mparameters[i].html_name}: "
- tpl.add bound_mtype.arguments[i].tpl_signature
+ tpl.add mparameters[i].html_name
if i < mparameters.length - 1 then tpl.add ", "
end
tpl.add "]"
return tpl
end
- redef fun tpl_definition do
- var tpl = new TplClassDefinition
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.comment = mdoc.tpl_comment
+ # Returns the MClassDef generic signature with static bounds.
+ fun html_signature: Template do
+ var tpl = new Template
+ var mparameters = mclass.mparameters
+ if not mparameters.is_empty then
+ tpl.add "["
+ for i in [0..mparameters.length[ do
+ tpl.add "{mparameters[i].html_name}: "
+ tpl.add bound_mtype.arguments[i].html_signature
+ if i < mparameters.length - 1 then tpl.add ", "
+ end
+ tpl.add "]"
end
return tpl
end
- redef fun tpl_css_classes do
+ redef fun css_classes do
var set = new HashSet[String]
if is_intro then set.add "intro"
for m in mclass.intro.modifiers do set.add m.to_cmangle
for m in modifiers do set.add m.to_cmangle
return set.to_a
end
-
- fun tpl_modifiers: Template do
- var tpl = new Template
- for modifier in modifiers do
- if modifier == "public" then continue
- tpl.add "{modifier.html_escape} "
- end
- return tpl
- end
end
redef class MProperty
redef var nitdoc_id = "{intro_mclassdef.mclass.nitdoc_id}__{name.to_cmangle}" is lazy
redef fun nitdoc_url do return "property_{nitdoc_id}.html"
-
redef fun mdoc_or_fallback do return intro.mdoc
+ redef fun html_modifiers do return intro.html_modifiers
+ redef fun html_declaration do return intro.html_declaration
- redef fun tpl_namespace do
+ # Returns `mclass::self`.
+ redef fun html_namespace do
var tpl = new Template
- tpl.add intro_mclassdef.mclass.tpl_namespace
+ tpl.add intro_mclassdef.mclass.html_namespace
tpl.add "::<span>"
- tpl.add intro.tpl_link
+ tpl.add intro.html_link
tpl.add "</span>"
return tpl
end
- redef fun tpl_declaration do return intro.tpl_declaration
+ # Returns `intro.html_short_signature`.
+ fun html_short_signature: Template do return intro.html_short_signature
- fun tpl_signature: Template do return new Template
+ # Returns `intro.html_signature`.
+ fun html_signature: Template do return intro.html_signature
- redef fun tpl_title do return intro.tpl_title
-
- redef fun tpl_icon do return intro.tpl_icon
-
- redef fun tpl_css_classes do return intro.tpl_css_classes
+ redef fun css_classes do return intro.css_classes
end
redef class MPropDef
redef var nitdoc_id = "{mclassdef.nitdoc_id}__{name.to_cmangle}" is lazy
redef fun nitdoc_url do return "{mproperty.nitdoc_url}#{nitdoc_id}"
-
redef fun mdoc_or_fallback do return mdoc or else mproperty.mdoc_or_fallback
- redef fun tpl_namespace do
- var tpl = new Template
- tpl.add mclassdef.tpl_namespace
- tpl.add "::"
- tpl.add tpl_link
- return tpl
- end
-
- redef fun tpl_article do
- var tpl = new TplArticle(nitdoc_id)
- tpl.summary_title = "in {mclassdef.html_name}"
- var title = new Template
- title.add "in "
- title.add mclassdef.tpl_link
- tpl.title = title
- tpl.subtitle = tpl_declaration
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.content = mdoc.tpl_comment
+ # Depends if `self` is an intro or not.
+ #
+ # * If intro contains the visibility and kind.
+ # * If redef contains the `redef` keyword and kind.
+ redef fun html_modifiers do
+ var res = new Array[String]
+ if not is_intro then
+ res.add "redef"
+ else
+ if mproperty.visibility != public_visibility then
+ res.add mproperty.visibility.to_s
+ end
end
- return tpl
+ return res
end
- redef fun tpl_definition do
- var tpl = new TplDefinition
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.comment = mdoc.tpl_comment
+ # Depends if `self` is an intro or not.
+ #
+ # For intro: `private fun foo(e: Object): Bar is abstract`
+ # For redef: `redef fun foo(e) is cached`
+ redef fun html_declaration do
+ var tpl = new Template
+ tpl.add "<span>"
+ tpl.add html_modifiers.join(" ")
+ tpl.add " "
+ if is_intro then
+ tpl.add html_link
+ tpl.add html_signature
+ else
+ tpl.add mproperty.intro.html_link
+ tpl.add html_short_signature
end
+ tpl.add "</span>"
return tpl
end
- redef fun tpl_declaration do
+ # Returns `mclassdef::self`
+ redef fun html_namespace do
var tpl = new Template
- tpl.add tpl_modifiers
- tpl.add tpl_link
- tpl.add tpl_signature
+ tpl.add mclassdef.html_namespace
+ tpl.add "::"
+ tpl.add html_link
return tpl
end
- redef fun tpl_css_classes do
+ # Returns the MPropdDef signature without static types.
+ fun html_short_signature: Template is abstract
+
+ # Returns the MPropDef signature with static types.
+ fun html_signature: Template is abstract
+
+ redef fun css_classes do
var set = new HashSet[String]
if is_intro then set.add "intro"
for m in mproperty.intro.modifiers do set.add m.to_cmangle
for m in modifiers do set.add m.to_cmangle
return set.to_a
end
+end
- fun tpl_modifiers: Template do
- var tpl = new Template
- for modifier in modifiers do
- if modifier == "public" then continue
- tpl.add "{modifier.html_escape} "
- end
- return tpl
- end
-
- fun tpl_signature: Template do return new Template
+redef class MAttributeDef
- redef fun tpl_list_item do
- var lnk = new Template
- lnk.add new TplLabel.with_classes(tpl_css_classes.to_a)
- var anchor = tpl_link
- anchor.href = "{mclassdef.mclass.nitdoc_url}#{mproperty.nitdoc_id}"
- lnk.add anchor
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- lnk.add ": "
- lnk.add mdoc.tpl_short_comment
- end
- return new TplListItem.with_content(lnk)
+ redef fun html_modifiers do
+ var res = super
+ res.add "var"
+ return res
end
- fun tpl_inheritance_item: TplListItem do
- var lnk = new Template
- lnk.add new TplLabel.with_classes(tpl_css_classes.to_a)
- lnk.add mclassdef.mmodule.tpl_namespace
- lnk.add "::"
- var anchor = mclassdef.tpl_link
- anchor.href = "{mclassdef.mclass.nitdoc_url}#{mproperty.nitdoc_id}"
- lnk.add anchor
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- lnk.add ": "
- lnk.add mdoc.tpl_short_comment
- end
- var li = new TplListItem.with_content(lnk)
- li.css_classes.add "signature"
- return li
- end
-end
+ redef fun html_short_signature do return new Template
-redef class MAttributeDef
- redef fun tpl_signature do
+ redef fun html_signature do
var tpl = new Template
if static_mtype != null then
tpl.add ": "
- tpl.add static_mtype.tpl_signature
+ tpl.add static_mtype.html_signature
end
return tpl
end
end
-redef class MMethod
- redef fun tpl_signature do
- var tpl = new Template
- var params = new Array[String]
- for param in intro.msignature.mparameters do
- params.add param.name.html_escape
+redef class MMethodDef
+
+ # FIXME annotation should be handled in their own way
+ redef fun html_modifiers do
+ var res = super
+ if is_abstract then
+ res.add "abstract"
+ else if is_intern then
+ res.add "intern"
end
- if not params.is_empty then
- tpl.add "("
- tpl.add params.join(", ")
- tpl.add ")"
+ if mproperty.is_init then
+ res.add "init"
+ else
+ res.add "fun"
end
- return tpl
+ return res
end
-end
-redef class MMethodDef
- redef fun tpl_signature do return msignature.tpl_signature
+ redef fun html_short_signature do return msignature.html_short_signature
+ redef fun html_signature do return msignature.html_signature
end
redef class MVirtualTypeProp
- redef fun tpl_link do return mvirtualtype.tpl_link
- redef fun tpl_signature do return tpl_link
+ redef fun html_link do return mvirtualtype.html_link
end
redef class MVirtualTypeDef
- redef fun tpl_signature do
+
+ redef fun html_modifiers do
+ var res = super
+ res.add "type"
+ return res
+ end
+
+ redef fun html_short_signature do return new Template
+
+ redef fun html_signature do
var tpl = new Template
if bound == null then return tpl
tpl.add ": "
- tpl.add bound.tpl_signature
+ tpl.add bound.html_signature
return tpl
end
end
redef class MType
- fun tpl_signature: Template is abstract
+ # Returns the signature of this type whithout bounds.
+ fun html_short_signature: Template is abstract
+
+ # Returns the signature of this type.
+ fun html_signature: Template is abstract
end
redef class MClassType
- redef fun tpl_link do return mclass.tpl_link
- redef fun tpl_signature do return tpl_link
+ redef fun html_link do return mclass.html_link
+ redef fun html_short_signature do return html_link
+ redef fun html_signature do return html_link
end
redef class MNullableType
- redef fun tpl_signature do
+
+ redef fun html_short_signature do
+ var tpl = new Template
+ tpl.add "nullable "
+ tpl.add mtype.html_short_signature
+ return tpl
+ end
+
+ redef fun html_signature do
var tpl = new Template
tpl.add "nullable "
- tpl.add mtype.tpl_signature
+ tpl.add mtype.html_signature
return tpl
end
end
redef class MGenericType
- redef fun tpl_signature do
+ redef fun html_short_signature do
+ var lnk = html_link
var tpl = new Template
- var lnk = tpl_link
- lnk.text = mclass.name.html_escape
- tpl.add lnk
+ tpl.add new Link.with_title(lnk.href, mclass.name.html_escape, lnk.title)
tpl.add "["
for i in [0..arguments.length[ do
- tpl.add arguments[i].tpl_signature
+ tpl.add arguments[i].html_short_signature
+ if i < arguments.length - 1 then tpl.add ", "
+ end
+ tpl.add "]"
+ return tpl
+ end
+
+ redef fun html_signature do
+ var lnk = html_link
+ var tpl = new Template
+ tpl.add new Link.with_title(lnk.href, mclass.name.html_escape, lnk.title)
+ tpl.add "["
+ for i in [0..arguments.length[ do
+ tpl.add arguments[i].html_signature
if i < arguments.length - 1 then tpl.add ", "
end
tpl.add "]"
end
redef class MParameterType
- redef fun tpl_link do
- return new TplLink.with_title("{mclass.nitdoc_url}#FT_{name.to_cmangle}", name, "formal type")
+ redef fun html_link do
+ return new Link.with_title("{mclass.nitdoc_url}#FT_{name.to_cmangle}", name, "formal type")
end
- redef fun tpl_signature do return tpl_link
+
+ redef fun html_short_signature do return html_link
+ redef fun html_signature do return html_link
end
redef class MVirtualType
- redef fun tpl_link do return mproperty.intro.tpl_link
- redef fun tpl_signature do return tpl_link
+ redef fun html_link do return mproperty.intro.html_link
+ redef fun html_signature do return html_link
end
redef class MSignature
- redef fun tpl_signature do
+
+ redef fun html_short_signature do
+ var tpl = new Template
+ if not mparameters.is_empty then
+ tpl.add "("
+ for i in [0..mparameters.length[ do
+ tpl.add mparameters[i].html_short_signature
+ if i < mparameters.length - 1 then tpl.add ", "
+ end
+ tpl.add ")"
+ end
+ return tpl
+ end
+
+ redef fun html_signature do
var tpl = new Template
if not mparameters.is_empty then
tpl.add "("
for i in [0..mparameters.length[ do
- tpl.add mparameters[i].tpl_signature
+ tpl.add mparameters[i].html_signature
if i < mparameters.length - 1 then tpl.add ", "
end
tpl.add ")"
end
if return_mtype != null then
tpl.add ": "
- tpl.add return_mtype.tpl_signature
+ tpl.add return_mtype.html_signature
end
return tpl
end
end
redef class MParameter
- fun tpl_signature: Template do
+
+ # Returns `self` name and ellipsys if any.
+ fun html_short_signature: Template do
+ var tpl = new Template
+ tpl.add name
+ if is_vararg then tpl.add "..."
+ return tpl
+ end
+
+ # Returns `self` name with it's static type and ellipsys if any.
+ fun html_signature: Template do
var tpl = new Template
tpl.add "{name}: "
- tpl.add mtype.tpl_signature
+ tpl.add mtype.html_signature
if is_vararg then tpl.add "..."
return tpl
end
end
redef class ConcernsTree
-
- private var seen = new HashSet[MConcern]
-
- redef fun add(p, e) do
- if seen.has(e) then return
- seen.add e
- super(p, e)
- end
-
- fun to_tpl: TplList do
- var lst = new TplList.with_classes(["list-unstyled", "list-definition"])
+ # Render `self` as a hierarchical UnorderedList.
+ fun html_list: UnorderedList do
+ var lst = new UnorderedList
+ lst.css_classes.add "list-unstyled list-definition"
for r in roots do
- var li = r.tpl_concern_item
+ var li = r.html_concern_item
lst.add_li li
- build_list(r, li)
+ build_html_list(r, li)
end
return lst
end
- private fun build_list(e: MConcern, li: TplListItem) do
+ # Build the html list recursively.
+ private fun build_html_list(e: MConcern, li: ListItem) do
if not sub.has_key(e) then return
var subs = sub[e]
- var lst = new TplList.with_classes(["list-unstyled", "list-definition"])
+ var lst = new UnorderedList
+ lst.css_classes.add "list-unstyled list-definition"
for e2 in subs do
if e2 isa MGroup and e2.is_root then
- build_list(e2, li)
+ build_html_list(e2, li)
else
- var sli = e2.tpl_concern_item
+ var sli = e2.html_concern_item
lst.add_li sli
- build_list(e2, sli)
+ build_html_list(e2, sli)
end
end
- li.append lst
+ var text = new Template
+ text.add li.text
+ if not lst.is_empty then text.add lst
+ li.text = text
end
end
+redef class MConcern
+ # Return a li element for `self` that can be displayed in a concern list
+ private fun html_concern_item: ListItem do
+ var lnk = html_link
+ var tpl = new Template
+ tpl.add new Link.with_title("#concern:{nitdoc_id}", lnk.text, lnk.title)
+ var comment = html_short_comment
+ if comment != null then
+ tpl.add ": "
+ tpl.add comment
+ end
+ return new ListItem(tpl)
+ end
+end
################################################################################
# Additions to `model_ext`.
redef class MRawType
- redef fun tpl_signature do
+ redef fun html_signature do
var tpl = new Template
for part in parts do
if part.target != null then
- tpl.add part.target.as(not null).tpl_link
+ tpl.add part.target.as(not null).html_link
else
tpl.add part.text.html_escape
end
redef class MInnerClass
redef fun nitdoc_url do return inner.nitdoc_url
- redef fun tpl_signature do return inner.tpl_signature
+ redef fun html_signature do return inner.html_signature
end
redef class MInnerClassDef
redef fun nitdoc_url do return inner.nitdoc_url
- redef fun tpl_anchor do return inner.tpl_anchor
- redef fun tpl_link do return inner.tpl_link
- redef fun tpl_signature do return inner.tpl_signature
-
- redef fun tpl_definition do
- var tpl = new TplClassDefinition
- var mdoc = mdoc_or_fallback
- if mdoc != null then
- tpl.comment = mdoc.tpl_comment
- end
- return tpl
- end
+ redef fun html_link_to_anchor do return inner.html_link_to_anchor
+ redef fun html_link do return inner.html_link
+ redef fun html_signature do return inner.html_signature
end
import html_model
import html::bootstrap
+import doc_phases::doc_structure
+import doc_phases::doc_hierarchies
+import doc_phases::doc_graphs
+import doc_phases::doc_intros_redefs
+import doc_phases::doc_lin
# Renders the page as HTML.
redef class DocPage
var topmenu: DocTopMenu is writable, noinit
# Sidebar template if any.
- var sidebar: nullable TplSidebar = null is writable
-
- # Content of the page in form a TplSection.
- # TODO remove when other templates are migrated.
- var sections = new Array[TplSection]
+ var sidebar: nullable DocSideBar = null is writable
# Footer content if any.
var footer: nullable Writable = null is writable
# JS scripts to append at the end of the body
var scripts = new Array[TplScript]
- # Adds a section to this page.
- # TODO remove when other templates are migrated.
- fun add_section(section: TplSection) do
- sections.add section
- end
-
# Renders the html `<head>`.
private fun render_head do
var css = (self.shareurl / "css").html_escape
addn ">"
end
- # Renders the sidebar template.
- #
- # Sidebar is automatically populated with a summary of all sections
- # TODO remove summary generation when other templates are migrated.
- private fun render_sidebar do
- if sidebar == null then return
- var summary = new TplSummary.with_order(0)
- for section in sections do
- section.render_summary summary
- end
- sidebar.boxes.add summary
- add sidebar.as(not null)
- end
-
# Renders the footer and content.
private fun render_content do
- for section in sections do add section
+ add root
if footer != null then
addn "<div class='well footer'>"
add footer.as(not null)
add topmenu
addn " </div>"
addn " <div class='row' id='content'>"
+ var sidebar = self.sidebar
if sidebar != null then
addn "<div class='col col-xs-3 col-lg-2'>"
- render_sidebar
+ add sidebar
addn "</div>"
addn "<div class='col col-xs-9 col-lg-10' data-spy='scroll' data-target='.summary'>"
render_content
addn "</div>"
render_footer
end
+
+ # Render table of content for this page.
+ fun html_toc: UnorderedList do
+ var lst = new UnorderedList
+ lst.css_classes.add "nav"
+ for child in root.children do
+ child.render_toc_item(lst)
+ end
+ return lst
+ end
end
# Top menu bar template.
addn "</nav>"
end
end
+
+# Nitdoc sidebar template.
+class DocSideBar
+ super Template
+
+ # Sidebar contains `DocSideBox`.
+ var boxes = new Array[DocSideBox]
+
+ redef fun rendering do
+ if boxes.is_empty then return
+ addn "<div id='sidebar'>"
+ for box in boxes do add box
+ addn "</div>"
+ end
+end
+
+# Something that can be put in a DocSideBar.
+class DocSideBox
+ super Template
+
+ # Box HTML id, used for Bootstrap collapsing feature.
+ #
+ # Use `html_title.to_cmangle` by default.
+ var id: String is lazy do return title.write_to_string.to_cmangle
+
+ # Title of the box to display.
+ var title: Writable
+
+ # Content to display in the box.
+ var content: Writable
+
+ # Is the box opened by default?
+ #
+ # Otherwise, the user will have to clic on the title to display the content.
+ #
+ # Default is `true`.
+ var is_open = true is writable
+
+ redef fun rendering do
+ var open = ""
+ if is_open then open = "in"
+ addn "<div class='panel'>"
+ addn " <div class='panel-heading'>"
+ add " <a data-toggle='collapse' data-parent='#sidebar'"
+ add " data-target='#box_{id}' href='#'>"
+ add title
+ addn " </a>"
+ addn " </div>"
+ addn " <div id='box_{id}' class='summary panel-body collapse {open}'>"
+ add content
+ addn " </div>"
+ addn "</div>"
+ end
+end
+
+redef class DocComposite
+ super Template
+
+ # HTML anchor id
+ var html_id: String is noinit, writable
+
+ # Title to display if any.
+ #
+ # This title can be decorated with HTML.
+ var html_title: nullable Writable is noinit, writable
+
+ # Subtitle to display if any.
+ var html_subtitle: nullable Writable is noinit, writable
+
+ # Render the element title and subtitle.
+ private fun render_title do
+ if html_title != null then
+ var header = new Header(hlvl, html_title.write_to_string)
+ header.css_classes.add "signature"
+ if hlvl == 2 then header.css_classes.add "well well-sm"
+ addn header
+ end
+ if html_subtitle != null then
+ addn "<div class='info subtitle'>"
+ addn html_subtitle.write_to_string
+ addn "</div>"
+ end
+ end
+
+ # Render the element body.
+ private fun render_body do
+ for child in children do addn child.write_to_string
+ end
+
+ redef fun rendering do
+ if is_hidden then return
+ render_title
+ render_body
+ end
+
+ # Level <hX> for HTML heading.
+ private fun hlvl: Int do
+ if parent == null then return 0
+ return parent.hlvl + 1
+ end
+
+ # Is `self` not displayed in the page.
+ #
+ # By default, empty elements are hidden.
+ fun is_hidden: Bool do return is_empty
+
+ # A short, undecorated title that goes in the table of contents.
+ #
+ # By default, returns `html_title.to_s`, subclasses should redefine it.
+ var toc_title: String is lazy, writable do return html_title.to_s
+
+ # Is `self` hidden in the table of content?
+ var is_toc_hidden = false is writable
+
+ # Render this element in a table of contents.
+ private fun render_toc_item(lst: UnorderedList) do
+ if is_toc_hidden then return
+
+ var content = new Template
+ content.add new Link("#{html_id}", toc_title)
+
+ if not children.is_empty then
+ var sublst = new UnorderedList
+ sublst.css_classes.add "nav"
+ for child in children do
+ child.render_toc_item(sublst)
+ end
+ content.add sublst
+ end
+ lst.add_li new ListItem(content)
+ end
+end
+
+redef class DocSection
+ super BSComponent
+
+ redef fun rendering do
+ if is_hidden then
+ addn "<a id=\"{html_id}\"></a>"
+ return
+ end
+ addn "<section{render_css_classes} id=\"{html_id}\">"
+ render_title
+ render_body
+ addn "</section>"
+ end
+end
+
+redef class DocArticle
+ super BSComponent
+
+ redef fun rendering do
+ if is_hidden then return
+ addn "<article{render_css_classes} id=\"{html_id}\">"
+ render_title
+ render_body
+ addn "</article>"
+ end
+end
+
+redef class HomeArticle
+ redef var html_id = "article:home"
+ redef var html_title = "Overview"
+
+ # HTML content to display on the home page.
+ #
+ # This attribute is set by the `doc_render` phase who knows the context.
+ var content: nullable String is noinit, writable
+
+ redef fun render_body do
+ var content = self.content
+ if content != null then add content
+ super
+ end
+end
+
+redef class IndexArticle
+ redef var html_id = "article:index"
+ redef var html_title = "Index"
+ redef fun is_empty do
+ return mmodules.is_empty and mclasses.is_empty and mprops.is_empty
+ end
+
+ redef fun render_body do
+ addn "<div class='container-fluid'>"
+ addn " <div class='row'>"
+ render_list("Modules", mmodules)
+ render_list("Classes", mclasses)
+ render_list("Properties", mprops)
+ addn "</div>"
+ addn "</div>"
+ end
+
+ # Displays a list from the content of `mentities`.
+ private fun render_list(title: String, mentities: Array[MEntity]) do
+ if mentities.is_empty then return
+ addn "<div class='col-xs-4'>"
+ addn new Header(3, title)
+ var lst = new UnorderedList
+ for mentity in mentities do
+ if mentity isa MProperty then
+ var tpl = new Template
+ tpl.add mentity.intro.html_link
+ tpl.add " ("
+ tpl.add mentity.intro.mclassdef.mclass.html_link
+ tpl.add ")"
+ lst.add_li new ListItem(tpl)
+ else
+ lst.add_li new ListItem(mentity.html_link)
+ end
+ end
+ addn lst
+ addn "</div>"
+ end
+end
+
+redef class ProjectsSection
+ redef var html_id = "section:projects"
+ redef var html_title = "Projects"
+end
+
+redef class MEntityComposite
+ redef var html_id is lazy do return mentity.nitdoc_id
+ redef var html_title is lazy do return mentity.nitdoc_name
+end
+
+redef class MEntitySection
+ redef var html_id is lazy do return "section:{mentity.nitdoc_name}"
+ redef var html_title is lazy do return mentity.html_name
+ redef var html_subtitle is lazy do return mentity.html_declaration
+end
+
+redef class ConcernSection
+ redef var html_id is lazy do return "concern:{mentity.nitdoc_id}"
+ redef var html_title is lazy do return "in {mentity.nitdoc_name}"
+ redef fun is_toc_hidden do return is_empty
+end
+
+redef class ImportationListSection
+ redef var html_id is lazy do return "section:{mentity.nitdoc_id}.importation"
+ redef var html_title is lazy do return "Dependencies"
+end
+
+redef class InheritanceListSection
+ redef var html_id is lazy do return "section:{mentity.nitdoc_id}.inheritance"
+ redef var html_title is lazy do return "Inheritance"
+end
+
+redef class IntroArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.intro"
+ redef var html_title = null
+ redef var is_hidden = false
+ redef var is_toc_hidden = true
+
+ # Link to source to display if any.
+ var html_source_link: nullable Writable is noinit, writable
+
+ redef fun render_title do
+ var lnk = html_source_link
+ if lnk != null then
+ add "<div class='source-link'>"
+ add lnk
+ addn "</div>"
+ end
+ super
+ end
+
+ redef fun render_body do
+ var comment = mentity.html_comment
+ if comment != null then addn comment
+ super
+ end
+end
+
+redef class ConcernsArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.concerns"
+ redef var html_title = "Concerns"
+ redef fun is_hidden do return concerns.is_empty
+ redef fun render_body do add concerns.html_list
+end
+
+redef class DefinitionListArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.definition-list"
+
+ redef var html_title is lazy do
+ var title = new Template
+ title.add mentity.html_icon
+ title.add mentity.html_link
+ return title
+ end
+
+ redef var html_subtitle is lazy do return mentity.html_namespace
+ redef var toc_title is lazy do return mentity.html_name
+end
+
+redef class DefinitionArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.definition"
+ redef var html_title is lazy do return mentity.html_name
+ redef var html_subtitle is lazy do return mentity.html_declaration
+ redef var is_hidden = false
+
+ # Does `self` display only it's title and no body?
+ #
+ # FIXME diff hack
+ var is_no_body: Bool = false is writable
+
+ # Does `self` display only the short content as definition?
+ #
+ # FIXME diff hack
+ var is_short_comment: Bool = false is writable
+
+ # Link to source to display if any.
+ var html_source_link: nullable Writable is noinit, writable
+
+ redef fun render_title do
+ var lnk = html_source_link
+ if lnk != null then
+ add "<div class='source-link'>"
+ add lnk
+ addn "</div>"
+ end
+ super
+ end
+
+ redef fun render_body do
+ if not is_no_body then
+ var comment
+ if is_short_comment then
+ comment = mentity.html_short_comment
+ else
+ comment = mentity.html_comment
+ end
+ if comment != null then addn comment
+ end
+ super
+ end
+end
+
+redef class HierarchyListArticle
+ redef var html_id is lazy do return "article:{list_title}_{mentity.nitdoc_id}.hierarchy"
+ redef var html_title is lazy do return list_title
+ redef fun is_empty do return mentities.is_empty
+ redef fun is_toc_hidden do return mentities.is_empty
+
+ redef fun render_body do
+ var lst = new UnorderedList
+ lst.css_classes.add "list-unstyled list-definition"
+ for mentity in mentities do
+ lst.add_li mentity.html_list_item
+ end
+ addn lst
+ end
+end
+
+redef class IntrosRedefsListArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.intros_redefs"
+ redef var html_title is lazy do return list_title
+ redef fun is_hidden do return mentities.is_empty
+ redef var is_toc_hidden = true
+
+ redef fun render_body do
+ var lst = new UnorderedList
+ lst.css_classes.add "list-unstyled list-labeled"
+ for mentity in mentities do
+ lst.add_li mentity.html_list_item
+ end
+ add lst
+ end
+end
+
+redef class DefinitionLinArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.lin"
+ redef var html_title is lazy do return "Linearization"
+ redef fun is_hidden do return mentities.is_empty
+ redef var is_toc_hidden = true
+
+ redef fun render_body do
+ var lst = new UnorderedList
+ lst.css_classes.add "list-unstyled list-labeled"
+ for mentity in mentities do
+ if not mentity isa MPropDef then continue # TODO handle all mentities
+ var tpl = new Template
+ tpl.add mentity.mclassdef.html_namespace
+ var comment = mentity.mclassdef.html_short_comment
+ if comment != null then
+ tpl.add ": "
+ tpl.add comment
+ end
+ var li = new ListItem(tpl)
+ li.css_classes.add "signature"
+ lst.add_li li
+ end
+ add lst
+ end
+end
+
+redef class GraphArticle
+ redef var html_id is lazy do return "article:{mentity.nitdoc_id}.graph"
+ redef var html_title = null
+ redef var toc_title do return "Graph"
+ redef var is_hidden = false
+ redef var is_toc_hidden = true
+
+ # HTML map used to display link.
+ #
+ # This attribute is set by the `doc_render` phase who knows the context.
+ var map: String is noinit, writable
+
+ redef fun render_body do
+ addn "<div class=\"text-center\">"
+ addn " <img src='{id}.png' usemap='#{id}' style='margin:auto'"
+ addn " alt='{graph_title}'/>"
+ add map
+ addn "</div>"
+ end
+end
module c
import ffi_base
+import light_c
-redef class FFILanguageAssignationPhase
- var c_language: FFILanguage = new CLanguage(self)
-end
-
-class CLanguage
- super FFILanguage
-
- redef fun identify_language(n) do return n.is_c
-
- redef fun compile_module_block(block, ecc, mmodule)
- do
- if block.is_c_header then
- ecc.header_custom.add block.location.as_line_pragma
- ecc.header_custom.add "\n"
- ecc.header_custom.add block.code
- else if block.is_c_body then
- ecc.body_impl.add block.location.as_line_pragma
- ecc.body_impl.add "\n"
- ecc.body_impl.add block.code
- end
- end
-
- redef fun compile_extern_method(block, m, ecc, mmodule)
- do
- var fc = new ExternCFunction(m, mmodule)
- fc.decls.add( block.location.as_line_pragma )
- fc.exprs.add( block.code )
- ecc.add_exported_function( fc )
- end
-
- redef fun compile_extern_class(block, m, ecc, mmodule) do end
-
- redef fun get_ftype(block, m) do return new ForeignCType(block.code)
-
+redef class CLanguage
redef fun compile_callback(callback, mmodule, mainmodule, ecc)
do
callback.compile_callback_to_c(mainmodule, ecc)
end
end
-redef class AExternCodeBlock
- fun is_c: Bool do return language_name == null or
- language_name_lowered == "c" or language_name_lowered.has_prefix( "c " )
-
- fun is_c_body: Bool do return language_name == null or
- language_name_lowered == "c" or language_name_lowered == "c body"
-
- fun is_c_header: Bool do return language_name_lowered == "c header"
-end
-
-redef class Location
- fun as_line_pragma: String do return "#line {line_start-1} \"{file.filename}\"\n"
-end
-
-redef class MModule
- # FIXME make nullable the key of `cflags`, `ldflags` and `cppflags` when
- # supported by the bootstrap
-
- # Custom options for the C compiler (CFLAGS)
- var cflags = new MultiHashMap[String, String]
-
- # Custom options for the C linker (LDFLAGS)
- var ldflags = new MultiHashMap[String, String]
-
- # Additional libraries needed for the compilation
- # Will be used with pkg-config
- var pkgconfigs = new Array[String]
-end
-
-class ForeignCType
- super ForeignType
-
- redef var ctype: String
-end
-
redef class NitniCallback
fun compile_callback_to_c(mmodule: MModule, ffi_ccu: CCompilationUnit) do end
end
-redef class Object
- # Context when calling user C code from generated code
- fun to_c_call_context: ToCCallContext do return once new ToCCallContext
-
- # Context when calling generated code from user C code
- fun from_c_call_context: FromCCallContext do return once new FromCCallContext
-end
-
redef class MExplicitCall
redef fun compile_callback_to_c(mmodule, ffi_ccu)
do
ffi_ccu.body_decl.add("#define {friendly_cname} {full_cname}\n")
end
end
-
-# Context when calling user C code from generated code
-class ToCCallContext
- super CallContext
-
- # TODO: private init because singleton instance (see `to_c_call_context`)
-
- redef fun name_mtype(mtype)
- do
- if mtype isa MClassType and mtype.mclass.kind == extern_kind then return "void *"
- return mtype.cname
- end
-end
-
-# Context when calling generated code from user C code
-class FromCCallContext
- super CallContext
-
- # TODO: private init because singleton instance (see `from_c_call_context`)
-
- redef fun name_mtype(mtype) do return mtype.cname
-end
-
-class ExternCFunction
- super CFunction
-
- var method: AMethPropdef
-
- init (method: AMethPropdef, mmodule: MModule)
- do
- self.method = method
-
- var recv_mtype = method.mpropdef.mclassdef.bound_mtype
- var csignature = method.mpropdef.mproperty.build_csignature(recv_mtype, mmodule, "___impl", long_signature, from_c_call_context)
-
- super( csignature )
- end
-end
# Manages all extern classes and their associated foreign type.
module extern_classes
-import ffi_base
+import light_ffi_base
+import modelize
redef class ToolContext
var extern_classes_typing_phase_ast: Phase = new ExternClassesTypingPhaseAst(self, [ffi_language_assignation_phase, modelize_class_phase])
# See the License for the specific language governing permissions and
# limitations under the License.
-# FFI concers common between the compilers and the interpreter.
-# Offers services to compile modules using foreign code. Mainly allows
-# to wrap foreign code in Nit methods.
+# Full FFI support, independent of the compiler
+#
+# The full FFI support all the features of the light FFI and more:
+#
+# * More foreign languages: **C++, Java and Objective-C**.
+# * **Callbacks** to Nit from foreign codes.
+# The callbacks are declared in Nit using the `import` annotation on extern methods.
+# They are then generated on demand for the target foreign language.
+# * **Static Nit types** in C for precise typing and static typing errors in C.
+# * **Propagating public code blocks** at the module level (C Header).
+# This allows to use extern classes in foreign code in other modules
+# without having to import the related headers.
+# This is optional in C as it is easy to find the correct importation.
+# However it is important in Java and other complex FFIs.
+# * **Reference pinning** of Nit objects from foreign code.
+# This ensure that objects referenced from foreign code are not liberated by the GC.
+# * FFI **annotations**:
+# * `cflags`, `ldflags` and `cppflags` pass arguments to the C and C++
+# compilers and linker.
+# * `pkgconfig` calls the `pkg-config` program to get the arguments
+# to pass to the C copiler and linker.
+# * `extra_java_files` adds Java source file to the compilation chain.
module ffi
import modelbuilder
import java
import extra_java_files
import objc
+intrude import light_ffi
redef class MModule
- # Does this module uses the FFI?
- var uses_ffi: Bool = false
-
- # C compilation unit for the FFI files
- private var ffi_ccu: nullable CCompilationUnit = null
-
- # Foreign language used in this AModule
- private var present_languages = new HashSet[FFILanguage]
-
# Complete the compilation of the FFI code
- fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)
+ redef fun finalize_ffi_wrapper(compdir, mainmodule)
do
for language in ffi_callbacks.keys do
for callback in ffi_callbacks[language] do
if mod.uses_ffi then ffi_ccu.header_custom.add("#include \"{mod.c_name}._ffi.h\"\n")
end
- var cflags = self.cflags[""].join(" ")
-
- ffi_ccu.write_as_impl(self, compdir)
- for filename in ffi_ccu.files do
- var f = new ExternCFile(filename, cflags)
- f.pkgconfigs.add_all pkgconfigs
- ffi_files.add(f)
- end
- end
-
- # Avoid the compile a ffi propdef more than once
- # See `AMethPropdef::compile_ffi_method`
- # FIXME find a better way
- private var compiled_ffi_methods = new HashSet[AMethPropdef]
-end
-
-redef class AModule
-
- # Ensures all of the general foreign code of the module has been analyzed.
- # Manages header blocks, extern class types and foreign dependancies between modules
- fun ensure_compile_ffi_wrapper
- do
- var mmodule = mmodule
- if mmodule == null or mmodule.ffi_ccu != null then return
-
- # ready extern code compiler
- var ffi_ccu = new CCompilationUnit
- mmodule.ffi_ccu = ffi_ccu
-
- # generate code
- for block in n_extern_code_blocks do
- var language = block.language
- assert language != null
- mmodule.present_languages.add(language)
- language.compile_module_block(block, ffi_ccu, mmodule)
- end
-
- ffi_ccu.header_c_base.add( "#include \"{mmodule.c_name}._nitni.h\"\n" )
-
- ffi_ccu.body_decl.add("#ifdef ANDROID\n")
- ffi_ccu.body_decl.add(" #include <android/log.h>\n")
- ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)\n")
- ffi_ccu.body_decl.add("#else\n")
- ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)\n")
- ffi_ccu.body_decl.add("#endif\n")
-
- for nclassdef in n_classdefs do
- # Does it declares an extern type?
- if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
- mmodule.uses_ffi = true
- var language = nclassdef.n_extern_code_block.language
- assert language != null
- mmodule.present_languages.add(language)
- nclassdef.n_extern_code_block.language.compile_extern_class(
- nclassdef.n_extern_code_block.as(not null), nclassdef, ffi_ccu, mmodule)
- end
- end
+ super
end
end
-redef class AMethPropdef
- # Compile the necessary wrapper around this extern method or constructor
- fun compile_ffi_method(mmodule: MModule)
- do
- assert n_extern_code_block != null
-
- if mmodule.compiled_ffi_methods.has(self) then return
- mmodule.compiled_ffi_methods.add self
-
- var language = n_extern_code_block.language
- assert language != null
- mmodule.present_languages.add(language)
- n_extern_code_block.language.compile_extern_method(
- n_extern_code_block.as(not null), self, mmodule.ffi_ccu.as(not null), mmodule)
- end
-end
redef class VerifyNitniCallbacksPhase
redef fun process_npropdef(npropdef)
# See the License for the specific language governing permissions and
# limitations under the License.
-# Tools and utilities for language targetted FFI implementations
+# Tools and utilities for implement FFI with different languages
module ffi_base
import c_tools
import modelbuilder
import nitni
-redef class ToolContext
- var ffi_language_assignation_phase: Phase = new FFILanguageAssignationPhase(self, null)
-end
-
-class FFILanguageAssignationPhase
- super Phase
-
- # All supported languages
- var languages = new Array[FFILanguage]
-
- redef fun process_nmodule(nmodule)
- do
- for block in nmodule.n_extern_code_blocks do
- verify_foreign_code_on_node( block )
- end
- end
-
- redef fun process_npropdef(npropdef)
- do
- if npropdef isa AMethPropdef then
- var code_block = npropdef.n_extern_code_block
- if code_block != null then
- verify_foreign_code_on_node( code_block )
- end
- end
- end
-
- redef fun process_nclassdef(nclassdef)
- do
- if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
- verify_foreign_code_on_node( nclassdef.n_extern_code_block.as(not null) )
- end
- end
-
- private fun verify_foreign_code_on_node(n: AExternCodeBlock)
- do
- var found = false
- for v in languages do
- var identified = v.identify_language(n)
- if identified then
- if found and identified then
- toolcontext.error(n.location, "FFI Error: two languages identified as possible handlers.")
- end
- n.language = v
- found = true
- end
- end
-
- if not found then toolcontext.error(n.location, "FFI Error: unsupported language.")
- end
-end
+import light_ffi_base
redef class MModule
- var ffi_files = new Array[ExternFile]
-
# Callbacks used by this module, classified by language
var ffi_callbacks = new HashMap[FFILanguage, Set[NitniCallback]]
end
-redef class AExternCodeBlock
- fun language_name: nullable String do
- if n_in_language == null then return null
- return n_in_language.n_string.without_quotes
- end
- fun language_name_lowered: nullable String do
- if language_name == null then return null
- return language_name.to_lower
- end
-
- fun code: String do return n_extern_code_segment.without_guard
-
- var language: nullable FFILanguage = null
-end
-
# Visitor for a specific languages. Works kinda like a `Phase` and is executed
# by a `Phase`.
-class FFILanguage
- var ffi_language_assignation_phase: FFILanguageAssignationPhase
-
- init
- do
- ffi_language_assignation_phase.languages.add(self)
- end
-
- # Is this `block` written in this language?
- fun identify_language(block: AExternCodeBlock ): Bool is abstract
-
- # Generate wrapper code for this module/header code block
- fun compile_module_block(block: AExternCodeBlock, ecc: CCompilationUnit, mmodule: MModule) is abstract
-
- # Generate wrapper code for this extern method
- fun compile_extern_method(block: AExternCodeBlock, m: AMethPropdef,
- ecc: CCompilationUnit, nmodule: MModule) is abstract
-
- # Generate wrapper code for this extern class
- fun compile_extern_class(block: AExternCodeBlock, m: AClassdef,
- ecc: CCompilationUnit, mmodule: MModule) is abstract
-
- # Get the foreign type of this extern class definition
- fun get_ftype(block: AExternCodeBlock, m: AClassdef): ForeignType is abstract
-
+redef class FFILanguage
# Generate the code to offer this callback if foreign code
fun compile_callback(callback: NitniCallback, mmodule: MModule,
mainmmodule: MModule, ecc: CCompilationUnit) is abstract
-
- # Complete compilation of generated code
- fun compile_to_files(mmodule: MModule, directory: String) do end
-end
-
-redef class TString
- # Returns the content of this node without both of the surrounding "
- fun without_quotes: String
- do
- assert text.length >= 2
- return text.substring(1, text.length-2)
- end
-end
-
-redef class TExternCodeSegment
- # Returns the content of this node without the surrounding `{ and `}
- fun without_guard: String
- do
- assert text.length >= 4
- return text.substring(2, text.length-4)
- end
-end
-
-redef class CCompilationUnit
- fun write_as_impl(mmodule: MModule, compdir: String)
- do
- var base_name = "{mmodule.c_name}._ffi"
-
- var h_file = "{base_name}.h"
- var guard = "{mmodule.c_name.to_upper}_NIT_H"
- write_header_to_file(mmodule, "{compdir}/{h_file}", new Array[String], guard)
-
- var c_file = "{base_name}.c"
- write_body_to_file(mmodule, "{compdir}/{c_file}", ["<stdlib.h>", "<stdio.h>", "\"{h_file}\""])
-
- files.add( "{compdir}/{c_file}" )
- end
-
- fun write_header_to_file(mmodule: MModule, file: String, includes: Array[String], guard: String)
- do
- var stream = new FileWriter.open( file )
-
- # header comments
- var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
-
- stream.write( module_info )
-
- stream.write( "#ifndef {guard}\n" )
- stream.write( "#define {guard}\n\n" )
-
- for incl in includes do stream.write( "#include {incl}\n" )
-
- compile_header_core( stream )
-
- # header file guard close
- stream.write( "#endif\n" )
- stream.close
- end
-
- fun write_body_to_file(mmodule: MModule, file: String, includes: Array[String])
- do
- var stream = new FileWriter.open(file)
-
- var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
-
- stream.write( module_info )
- for incl in includes do stream.write( "#include {incl}\n" )
-
- compile_body_core( stream )
-
- stream.close
- end
-end
-
-class ForeignType
- fun ctype: String do return "void*"
end
var csignature = mproperty.build_c_implementation_signature(recv_mtype, mmodule, "___indirect", long_signature, from_java_call_context)
var cf = new CFunction("JNIEXPORT {csignature}")
cf.exprs.add "\t{mproperty.build_ccall(recv_mtype, mainmodule, null, long_signature, from_java_call_context, null)}\n"
- ccu.add_local_function cf
+ ccu.add_non_static_local_function cf
# In Java, declare the extern method as a private static local method
var java_signature = mproperty.build_csignature(recv_mtype, mainmodule, null, short_signature, java_call_context)
private fun java_call_context: JavaCallContext do return new JavaCallContext
private fun to_java_call_context: ToJavaCallContext do return new ToJavaCallContext
private fun from_java_call_context: FromJavaCallContext do return new FromJavaCallContext
+
+redef class CCompilationUnit
+ # Similar to `add_local_function` but not `static`
+ #
+ # Used when the signature contains a visibility attribute.
+ private fun add_non_static_local_function(c_function: CFunction)
+ do
+ body_decl.add c_function.signature
+ body_decl.add ";\n"
+
+ body_impl.add "\n"
+ body_impl.add c_function.to_writer
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# 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.
+
+# Support for nesting C code within a Nit program using its FFI
+module light_c
+
+import modelize::modelize_property
+
+import light_ffi_base
+
+redef class FFILanguageAssignationPhase
+ var c_language: FFILanguage = new CLanguage(self)
+end
+
+class CLanguage
+ super FFILanguage
+
+ redef fun identify_language(n) do return n.is_c
+
+ redef fun compile_module_block(block, ecc, mmodule)
+ do
+ if block.is_c_header then
+ ecc.header_custom.add block.location.as_line_pragma
+ ecc.header_custom.add "\n"
+ ecc.header_custom.add block.code
+ else if block.is_c_body then
+ ecc.body_impl.add block.location.as_line_pragma
+ ecc.body_impl.add "\n"
+ ecc.body_impl.add block.code
+ end
+ end
+
+ redef fun compile_extern_method(block, m, ecc, mmodule)
+ do
+ var fc = new ExternCFunction(m, mmodule)
+ fc.decls.add( block.location.as_line_pragma )
+ fc.exprs.add( block.code )
+ ecc.add_exported_function( fc )
+ end
+
+ redef fun compile_extern_class(block, m, ecc, mmodule) do end
+
+ redef fun get_ftype(block, m) do return new ForeignCType(block.code)
+end
+
+redef class AExternCodeBlock
+ fun is_c: Bool do return language_name == null or
+ language_name_lowered == "c" or language_name_lowered.has_prefix( "c " )
+
+ fun is_c_body: Bool do return language_name == null or
+ language_name_lowered == "c" or language_name_lowered == "c body"
+
+ fun is_c_header: Bool do return language_name_lowered == "c header"
+end
+
+redef class Location
+ fun as_line_pragma: String do return "#line {line_start-1} \"{file.filename}\"\n"
+end
+
+redef class MModule
+ # FIXME make nullable the key of `cflags`, `ldflags` and `cppflags` when
+ # supported by the bootstrap
+
+ # Custom options for the C compiler (CFLAGS)
+ var cflags = new MultiHashMap[String, String]
+
+ # Custom options for the C linker (LDFLAGS)
+ var ldflags = new MultiHashMap[String, String]
+
+ # Additional libraries needed for the compilation
+ # Will be used with pkg-config
+ var pkgconfigs = new Array[String]
+end
+
+class ForeignCType
+ super ForeignType
+
+ redef var ctype: String
+end
+
+redef class Object
+ # Context when calling user C code from generated code
+ fun to_c_call_context: ToCCallContext do return once new ToCCallContext
+
+ # Context when calling generated code from user C code
+ fun from_c_call_context: FromCCallContext do return once new FromCCallContext
+end
+
+# Context when calling user C code from generated code
+class ToCCallContext
+ super CallContext
+
+ # TODO: private init because singleton instance (see `to_c_call_context`)
+
+ redef fun name_mtype(mtype)
+ do
+ if mtype isa MClassType and mtype.mclass.kind == extern_kind then return "void *"
+ return mtype.cname
+ end
+end
+
+# Context when calling generated code from user C code
+class FromCCallContext
+ super CallContext
+
+ # TODO: private init because singleton instance (see `from_c_call_context`)
+
+ redef fun name_mtype(mtype) do return mtype.cname
+end
+
+class ExternCFunction
+ super CFunction
+
+ var method: AMethPropdef
+
+ init (method: AMethPropdef, mmodule: MModule)
+ do
+ self.method = method
+
+ var recv_mtype = method.mpropdef.mclassdef.bound_mtype
+ var csignature = method.mpropdef.mproperty.build_csignature(recv_mtype, mmodule, "___impl", long_signature, from_c_call_context)
+
+ super( csignature )
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# 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.
+
+# Light FFI support, independent of the compiler
+#
+# The light FFI offers only basic FFI features:
+#
+# * **Extern methods** implemented in C, nested within the Nit code.
+# The body of these method is copied directly to the generated C files for compilation.
+# Also supports extern `new` factories.
+# * Module level **C code blocks**, both "C Body" (the default) and "C Header".
+# They will be copied to the beginning of the generated C files.
+# * Automatic transformation of Nit **primitive types** from/to their equivalent in C.
+# * **Extern classes** to create a Nit class around a C pointer.
+# Allows to specify the equivalent C type of the Nit extern class.
+#
+# These limited features should be easy to implement in new/alternative engines
+# to quickly achieve a bootstrap. For this reason, core features of the Nit
+# standard library should be limited to use the light FFI.
+module light_ffi
+
+import modelbuilder
+
+import nitni::nitni_utilities
+
+intrude import light_ffi_base
+import extern_classes
+import light_c
+
+redef class MModule
+ # Does this module uses the FFI?
+ var uses_ffi: Bool = false
+
+ # C compilation unit for the FFI files
+ private var ffi_ccu: nullable CCompilationUnit = null
+
+ # Foreign language used in this AModule
+ private var present_languages = new HashSet[FFILanguage]
+
+ # Complete the compilation of the FFI code
+ fun finalize_ffi_wrapper(compdir: String, mainmodule: MModule)
+ do
+ var cflags = self.cflags[""].join(" ")
+
+ ffi_ccu.write_as_impl(self, compdir)
+ for filename in ffi_ccu.files do
+ var f = new ExternCFile(filename, cflags)
+ f.pkgconfigs.add_all pkgconfigs
+ ffi_files.add(f)
+ end
+ end
+
+ # Avoid the compile a ffi propdef more than once
+ # See `AMethPropdef::compile_ffi_method`
+ # FIXME find a better way
+ private var compiled_ffi_methods = new HashSet[AMethPropdef]
+end
+
+redef class AModule
+
+ # Ensures all of the general foreign code of the module has been analyzed.
+ # Manages header blocks, extern class types and foreign dependancies between modules
+ fun ensure_compile_ffi_wrapper
+ do
+ var mmodule = mmodule
+ if mmodule == null or mmodule.ffi_ccu != null then return
+
+ # ready extern code compiler
+ var ffi_ccu = new CCompilationUnit
+ mmodule.ffi_ccu = ffi_ccu
+
+ # generate code
+ for block in n_extern_code_blocks do
+ var language = block.language
+ assert language != null
+ mmodule.present_languages.add(language)
+ language.compile_module_block(block, ffi_ccu, mmodule)
+ end
+
+ ffi_ccu.header_c_base.add( "#include \"{mmodule.c_name}._nitni.h\"\n" )
+
+ ffi_ccu.body_decl.add("#ifdef ANDROID\n")
+ ffi_ccu.body_decl.add(" #include <android/log.h>\n")
+ ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) (void)__android_log_print(ANDROID_LOG_WARN, \"Nit\", __VA_ARGS__)\n")
+ ffi_ccu.body_decl.add("#else\n")
+ ffi_ccu.body_decl.add(" #define PRINT_ERROR(...) fprintf(stderr, __VA_ARGS__)\n")
+ ffi_ccu.body_decl.add("#endif\n")
+
+ for nclassdef in n_classdefs do
+ # Does it declares an extern type?
+ if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
+ mmodule.uses_ffi = true
+ var language = nclassdef.n_extern_code_block.language
+ assert language != null
+ mmodule.present_languages.add(language)
+ nclassdef.n_extern_code_block.language.compile_extern_class(
+ nclassdef.n_extern_code_block.as(not null), nclassdef, ffi_ccu, mmodule)
+ end
+ end
+ end
+end
+
+redef class AMethPropdef
+ # Compile the necessary wrapper around this extern method or constructor
+ fun compile_ffi_method(mmodule: MModule)
+ do
+ assert n_extern_code_block != null
+
+ if mmodule.compiled_ffi_methods.has(self) then return
+ mmodule.compiled_ffi_methods.add self
+
+ var language = n_extern_code_block.language
+ assert language != null
+ mmodule.present_languages.add(language)
+ n_extern_code_block.language.compile_extern_method(
+ n_extern_code_block.as(not null), self, mmodule.ffi_ccu.as(not null), mmodule)
+ end
+end
--- /dev/null
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# 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.
+
+# Tools and utilities for implement FFI with different languages
+module light_ffi_base
+
+import c_tools
+import parser
+import modelbuilder
+import nitni::nitni_utilities
+
+redef class ToolContext
+ # Phase that assign a `FFILanguage` to all `AExternCodeBlock`
+ var ffi_language_assignation_phase: Phase = new FFILanguageAssignationPhase(self, null)
+end
+
+# Phase that assign a `FFILanguage` to all `AExternCodeBlock`
+#
+# It will also report errors when using an unknown foreign langages.
+class FFILanguageAssignationPhase
+ super Phase
+
+ # All supported languages
+ var languages = new Array[FFILanguage]
+
+ redef fun process_nmodule(nmodule)
+ do
+ for block in nmodule.n_extern_code_blocks do
+ verify_foreign_code_on_node( block )
+ end
+ end
+
+ redef fun process_npropdef(npropdef)
+ do
+ if npropdef isa AMethPropdef then
+ var code_block = npropdef.n_extern_code_block
+ if code_block != null then
+ verify_foreign_code_on_node( code_block )
+ end
+ end
+ end
+
+ redef fun process_nclassdef(nclassdef)
+ do
+ if nclassdef isa AStdClassdef and nclassdef.n_extern_code_block != null then
+ verify_foreign_code_on_node( nclassdef.n_extern_code_block.as(not null) )
+ end
+ end
+
+ private fun verify_foreign_code_on_node(n: AExternCodeBlock)
+ do
+ var found = false
+ for v in languages do
+ var identified = v.identify_language(n)
+ if identified then
+ if found and identified then
+ toolcontext.error(n.location, "FFI Error: two languages identified as possible handlers.")
+ end
+ n.language = v
+ found = true
+ end
+ end
+
+ if not found then toolcontext.error(n.location, "FFI Error: unsupported language.")
+ end
+end
+
+redef class MModule
+ # All FFI files linked to this module
+ var ffi_files = new Array[ExternFile]
+end
+
+redef class AExternCodeBlock
+ # User entered name for the language of this block
+ fun language_name: nullable String do
+ if n_in_language == null then return null
+ return n_in_language.n_string.without_quotes
+ end
+
+ # `language_name`, in lower case
+ protected fun language_name_lowered: nullable String do
+ if language_name == null then return null
+ return language_name.to_lower
+ end
+
+ # User entered foreign code in the block
+ fun code: String do return n_extern_code_segment.without_guard
+
+ # `FFILanguage` assigned to this block
+ var language: nullable FFILanguage = null
+end
+
+# Visitor for a specific languages. Works kinda like a `Phase` and is executed
+# by a `Phase`.
+class FFILanguage
+ # `FFILanguageAssignationPhase` assigning `self` to `AExternCodeBlock`s
+ var ffi_language_assignation_phase: FFILanguageAssignationPhase
+
+ init
+ do
+ ffi_language_assignation_phase.languages.add(self)
+ end
+
+ # Is this `block` written in this language?
+ fun identify_language(block: AExternCodeBlock ): Bool is abstract
+
+ # Generate wrapper code for this module/header code block
+ fun compile_module_block(block: AExternCodeBlock, ecc: CCompilationUnit, mmodule: MModule) is abstract
+
+ # Generate wrapper code for this extern method
+ fun compile_extern_method(block: AExternCodeBlock, m: AMethPropdef,
+ ecc: CCompilationUnit, nmodule: MModule) is abstract
+
+ # Generate wrapper code for this extern class
+ fun compile_extern_class(block: AExternCodeBlock, m: AClassdef,
+ ecc: CCompilationUnit, mmodule: MModule) is abstract
+
+ # Get the foreign type of this extern class definition
+ fun get_ftype(block: AExternCodeBlock, m: AClassdef): ForeignType is abstract
+
+ # Complete compilation of generated code
+ fun compile_to_files(mmodule: MModule, directory: String) do end
+end
+
+redef class TString
+ # Returns the content of this node without both of the surrounding "
+ fun without_quotes: String
+ do
+ assert text.length >= 2
+ return text.substring(1, text.length-2)
+ end
+end
+
+redef class TExternCodeSegment
+ # Returns the content of this node without the surrounding `{ and `}
+ fun without_guard: String
+ do
+ assert text.length >= 4
+ return text.substring(2, text.length-4)
+ end
+end
+
+redef class CCompilationUnit
+ # Compile as `_ffi` files which contains the implementation of extern methods
+ fun write_as_impl(mmodule: MModule, compdir: String)
+ do
+ var base_name = "{mmodule.c_name}._ffi"
+
+ var h_file = "{base_name}.h"
+ var guard = "{mmodule.c_name.to_upper}_NIT_H"
+ write_header_to_file(mmodule, "{compdir}/{h_file}", new Array[String], guard)
+
+ var c_file = "{base_name}.c"
+ write_body_to_file(mmodule, "{compdir}/{c_file}", ["<stdlib.h>", "<stdio.h>", "\"{h_file}\""])
+
+ files.add( "{compdir}/{c_file}" )
+ end
+
+ # Write the header part to `file` including all `includes` using the `guard`
+ fun write_header_to_file(mmodule: MModule, file: String, includes: Array[String], guard: String)
+ do
+ var stream = new FileWriter.open( file )
+
+ # header comments
+ var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
+
+ stream.write( module_info )
+
+ stream.write( "#ifndef {guard}\n" )
+ stream.write( "#define {guard}\n\n" )
+
+ for incl in includes do stream.write( "#include {incl}\n" )
+
+ compile_header_core( stream )
+
+ # header file guard close
+ stream.write( "#endif\n" )
+ stream.close
+ end
+
+ # Write the body part to `file` including all `includes`
+ fun write_body_to_file(mmodule: MModule, file: String, includes: Array[String])
+ do
+ var stream = new FileWriter.open(file)
+
+ var module_info = "/*\n\tExtern implementation of Nit module {mmodule.name}\n*/\n"
+
+ stream.write( module_info )
+ for incl in includes do stream.write( "#include {incl}\n" )
+
+ compile_body_core( stream )
+
+ stream.close
+ end
+end
+
+# Foreign equivalent types of extern classes
+class ForeignType
+ # C type of `self`, by default it is `void*`
+ fun ctype: String do return "void*"
+end
import check_annotation
import glsl_validation
import parallelization_phase
+import i18n_phase
redef class ToolContext
# FIXME: there is conflict in linex in nitc, so use this trick to force invocation
--- /dev/null
+# 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 support of internationalization through the generation of id-to-string tables
+module i18n_phase
+
+intrude import literal
+private import annotation
+private import parser_util
+import astbuilder
+
+redef class ToolContext
+ # Main phase of `language`
+ var localize_phase: Phase = new I18NPhase(self, [literal_phase])
+end
+
+private class I18NPhase
+ super Phase
+
+ redef fun process_annotated_node(nmodule, nat) do
+ if not nat.name == "i18n" then return
+
+ if not nmodule isa AModuledecl then
+ toolcontext.error(nmodule.location, "Error: The localized language can only be used on module declarations.")
+ return
+ end
+
+ var domain = nmodule.n_name.n_id.text
+
+ var lang: nullable String = null
+ if nat.n_args.length > 0 then
+ lang = nat.arg_as_string(toolcontext.modelbuilder)
+ if lang == null then return
+ end
+
+ var module_dir = nmodule.location.file.filename.dirname.realpath
+ var locale_dir = module_dir / "languages"
+
+ if not locale_dir.file_exists then locale_dir.mkdir
+
+ var amodule = nmodule.parent.as(AModule)
+
+ var vi = new StringFinder(domain, locale_dir, toolcontext, amodule)
+ vi.enter_visit(amodule)
+
+ var module_name = nmodule.location.file.filename.basename(".nit")
+
+ var pot_path = locale_dir / module_name
+ var arr = vi.strings.values.to_a
+ var po = new POFile.with_strings(arr)
+ po.write_template(pot_path)
+
+ if lang != null then
+ for i in po.strings do
+ i.msgstr = i.msgid
+ end
+
+ var lang_dir = locale_dir / lang
+ if not lang_dir.file_exists then lang_dir.mkdir
+
+ var messages_dir = lang_dir / "LC_MESSAGES"
+ if not messages_dir.file_exists then messages_dir.mkdir
+
+ po.write_to_file(messages_dir / module_name)
+ end
+
+ var lit = new LiteralVisitor(toolcontext)
+ lit.enter_visit(amodule)
+ end
+end
+
+private class StringFinder
+ super Visitor
+
+ # Strings in the file, used to generate .pot and .po files
+ var strings = new HashMap[String, PObject]
+
+ # Domain of the strings to internationalize
+ var domain: String
+
+ # Location of the languages file
+ var languages_location: String
+
+ # Context for the visitor, used only for the parse_expr
+ var toolcontext: ToolContext
+
+ # The module we are working on
+ var amodule: AModule
+
+ redef fun visit(n)
+ do
+ n.accept_string_finder(self)
+ n.visit_all(self)
+ end
+
+ redef fun enter_visit(e) do
+ if e isa AAnnotation then return
+ super
+ end
+
+ # Adds a String to the list of strings of the module
+ #
+ # The string needs to be pre-formatted to C standards (escape_to_c)
+ fun add_string(s: String, loc: Location) do
+ var locstr = "{amodule.mmodule.mgroup.name}::{amodule.mmodule.name} {loc.line_start}--{loc.column_start}:{loc.column_end}"
+ if not strings.has_key(s) then
+ var po = new PObject([locstr], s, "")
+ strings[s] = po
+ else
+ strings[s].locations.push locstr
+ end
+ end
+end
+
+redef class ANode
+ private fun accept_string_finder(v: StringFinder) do end
+end
+
+redef class AStringExpr
+
+ redef fun accept_string_finder(v) do
+ var str = value.as(not null).escape_to_c
+ var parse = v.toolcontext.parse_expr("\"{str}\".get_translation(\"{v.domain}\", \"{v.languages_location}\").unescape_nit")
+ replace_with(parse)
+ v.add_string(str, location)
+ end
+end
+
+redef class ASuperstringExpr
+
+ redef fun accept_string_finder(v) do
+ var fmt = ""
+ var exprs = new Array[AExpr]
+ for i in n_exprs do
+ if i isa AStringFormExpr then
+ fmt += i.value.as(not null)
+ else
+ fmt += "%"
+ exprs.push i
+ fmt += exprs.length.to_s
+ end
+ end
+ fmt = fmt.escape_to_c
+ v.add_string(fmt, location)
+ var parse = v.toolcontext.parse_expr("\"{fmt}\".get_translation(\"{v.domain}\", \"{v.languages_location}\").unescape_nit.format()")
+ if not parse isa ACallExpr then
+ v.toolcontext.error(location, "Fatal error in i18n annotation, the parsed superstring could not be generated properly")
+ return
+ end
+ var parse_exprs = parse.n_args.n_exprs
+ parse_exprs.add_all exprs
+ replace_with parse
+ end
+end
+
+# .po file entry
+#
+# Locations are optional, they just serve for translation purposes
+# to help the translator with the context of the message if necessary
+#
+# msgid and msgstr are the map of translate to translated strings in the po file.
+class PObject
+ # Array since the same string can be encountered at several places
+ var locations: Array[String]
+ # Identifier of the string to translate (i.e. the string itself)
+ var msgid: String is writable
+ # Translation of the string
+ var msgstr: String is writable
+end
+
+# A GNU gettext .po/.pot file
+class POFile
+ super Writable
+
+ # Map of the strings's `msgid` and `msgstr`
+ #
+ # Read from a PO file
+ var strings: Array[PObject]
+
+ # Creates a PO file with strings built-in
+ init with_strings(sm: Array[PObject])do
+ strings = new Array[PObject].with_capacity(sm.length)
+ strings.add_all sm
+ end
+
+ redef fun write_to_file(path) do
+ if not path.has_suffix(".po") then path += ".po"
+ super path
+ end
+
+ redef fun write_to(ofs) do
+ for i in strings do
+ ofs.write("#: {i.locations.join(", ")}\n")
+ ofs.write("msgid \"{i.msgid}\"\n")
+ ofs.write("msgstr \"{i.msgstr}\"\n\n")
+ end
+ ofs.write("# Generated file, do not modify\n")
+ end
+
+ # Writes the information of the POFile to a .pot template file
+ fun write_template(path: String) do
+ if not path.has_suffix(".pot") then path += ".pot"
+ var f = new FileWriter.open(path)
+ write_to(f)
+ f.close
+ end
+end
#TODO: check for self calls
- if nmethdef.n_signature.n_type != null then
- toolcontext.error(nat.location, "Error: functions not supported yet.")
- return
- end
-
# Get the module associated with this method
var amod = nmethdef.parent.parent
assert amod isa AModule
classname += nmethdef.n_methid.as(AIdMethid).n_id.text
end
+ # Handle methods with a return value
+ var has_rvalue = nmethdef.n_signature.n_type != null
+ var vtype = ""
+ if has_rvalue then
+ vtype = "redef type E: " + nmethdef.n_signature.n_type.n_id.text
+ end
+ # create a return type
+ var n_id = new TClassid
+ n_id.text = classname
+ var n_type = new AType
+ n_type.n_id = n_id
+ nmethdef.n_signature.n_type = n_type
var params = new Array[String]
# case if the method has parameters
class {{{classname}}}
super Thread
+ {{{vtype}}}
+
{{{params.join("\n")}}}
redef fun main do
end
mainfun.n_block = nmethdef.n_block
# Add "return null" to the end of the `main` function
- var s_nullreturn = "return null"
- var nullreturn = toolcontext.parse_something(s_nullreturn)
- assert nullreturn isa AExpr
- mainfun.n_block.as(ABlockExpr).n_expr.add(nullreturn)
-
+ if not has_rvalue then
+ var s_nullreturn = "return null"
+ var nullreturn = toolcontext.parse_something(s_nullreturn)
+ assert nullreturn isa AExpr
+ mainfun.n_block.as(ABlockExpr).n_expr.add(nullreturn)
+ end
# Create new body for the annotated fun
var s_newbody : String
s_newbody ="""
var thread = new {{{classname}}}({{{init_params.join(",")}}})
thread.start
+return thread
"""
else
s_newbody = """
var thread = new {{{classname}}}
thread.start
+return thread
"""
end
do
var v = new SimpleMiscVisitor(toolcontext)
v.enter_visit(self)
+
+ var t = location.file.first_token
+ while t != null do
+ t.accept_simple_misc_token(v)
+ t = t.next_token
+ end
end
end
private fun after_simple_misc(v: SimpleMiscVisitor) do end
end
+redef class Token
+ private fun accept_simple_misc_token(v: SimpleMiscVisitor)
+ do
+ end
+end
+
redef class ASignature
redef fun after_simple_misc(v)
do
v.once_count = v.once_count - 1
end
end
+
+redef class TSemi
+ redef fun accept_simple_misc_token(v)
+ do
+ var n = next_token
+ var p = prev_token
+ if
+ n == null or
+ n isa TEol or
+ n isa EOF or
+ n isa TComment or
+ p == null or
+ p isa TEol or
+ p isa EOF or
+ p isa TComment or
+ p isa TSemi
+ then
+ v.warning(self, "semi", "Warning: superfluous `;`.")
+ return
+ end
+ end
+end
end
end
+redef class ANamedargExpr
+ redef fun expr(v)
+ do
+ return v.expr(self.n_expr)
+ end
+end
+
redef class ADebugTypeExpr
redef fun stmt(v)
do
import modelize
redef class ToolContext
+ # Compute MENDEL metrics.
+ #
+ # See `mendel_metrics` module documentation.
var mendel_metrics_phase: Phase = new MendelMetricsPhase(self, null)
end
metrics.collect(mclasses)
if csv then metrics.to_csv.save("{out}/mendel.csv")
- print toolcontext.format_h4("\tlarge mclasses (threshold: {cnblp.threshold})")
- for mclass in cnblp.above_threshold do
- print toolcontext.format_p("\t {mclass.name}: {cnblp.values[mclass]}")
+ var threshold = cnblp.threshold
+ print toolcontext.format_h4("\tlarge mclasses (threshold: {threshold})")
+ for mclass in cnblp.sort do
+ var val = cnblp.values[mclass]
+ if val.to_f < threshold then break
+ print toolcontext.format_p("\t {mclass.name}: {val}")
end
- print toolcontext.format_h4("\tbudding mclasses (threshold: {cnvi.threshold})")
- for mclass in cnvi.above_threshold do
- print toolcontext.format_p("\t {mclass.name}: {cnvi.values[mclass]}")
+ threshold = cnvi.threshold
+ print toolcontext.format_h4("\tbudding mclasses (threshold: {threshold})")
+ for mclass in cnvi.sort do
+ var val = cnvi.values[mclass]
+ if val.to_f < threshold then break
+ print toolcontext.format_p("\t {mclass.name}: {val}")
end
- print toolcontext.format_h4("\tblooming mclasses (threshold: {cnvs.threshold})")
- for mclass in cnvs.above_threshold do
- print toolcontext.format_p("\t {mclass.name}: {cnvs.values[mclass]}")
- end
-
- print toolcontext.format_h4("\tblooming mclasses (threshold: {cnvs.threshold})")
- for mclass in cnvs.above_threshold do
- print toolcontext.format_p("\t {mclass.name}: {cnvs.values[mclass]}")
+ threshold = cnvs.threshold
+ print toolcontext.format_h4("\tblooming mclasses (threshold: {threshold})")
+ for mclass in cnvs.sort do
+ var val = cnvs.values[mclass]
+ if val.to_f < threshold then break
+ print toolcontext.format_p("\t {mclass.name}: {val}")
end
if csv then
redef fun name do return "cbms"
redef fun desc do return "branch mean size, mean number of introduction available among ancestors"
+ # Mainmodule used to compute class hierarchy.
var mainmodule: MModule
- init(mainmodule: MModule) do self.mainmodule = mainmodule
redef fun collect(mclasses) do
for mclass in mclasses do
redef fun name do return "cnvi"
redef fun desc do return "class novelty index, contribution of the class to its branch in term of introductions"
+ # Mainmodule used to compute class hierarchy.
var mainmodule: MModule
- init(mainmodule: MModule) do self.mainmodule = mainmodule
redef fun collect(mclasses) do
var cbms = new CBMS(mainmodule)
redef fun name do return "cnvs"
redef fun desc do return "class novelty score, importance of the contribution of the class to its branch"
+ # Mainmodule used to compute class hierarchy.
var mainmodule: MModule
- init(mainmodule: MModule) do self.mainmodule = mainmodule
redef fun collect(mclasses) do
var cnvi = new CNVI(mainmodule)
var opt_generate_hyperdoc = new OptionBool("Generate Hyperdoc", "--generate_hyperdoc")
# --poset
var opt_poset = new OptionBool("Complete metrics on posets", "--poset")
-
# --no-colors
var opt_nocolors = new OptionBool("Disable colors in console outputs", "--no-colors")
-
-
+ # --dir
var opt_dir = new OptionString("Directory where some statistics files are generated", "-d", "--dir")
+
+ # Output directory for metrics files.
var output_dir: String = "."
redef init
end
end
- # colorize heading 1 for console output
+ # Format and colorize a string heading of level 1 for console output.
+ #
+ # Default style is yellow and bold.
fun format_h1(str: String): String do
if opt_nocolors.value then return str
return str.yellow.bold
end
+ # Format and colorize a string heading of level 2 for console output.
+ #
+ # Default style is white and bold.
fun format_h2(str: String): String do
if opt_nocolors.value then return str
return str.bold
end
+ # Format and colorize a string heading of level 3 for console output.
+ #
+ # Default style is white and nobold.
fun format_h3(str: String): String do
if opt_nocolors.value then return str
return str
end
+ # Format and colorize a string heading of level 4 for console output.
+ #
+ # Default style is green.
fun format_h4(str: String): String do
if opt_nocolors.value then return str
return str.green
end
+ # Format and colorize a string heading of level 5 for console output.
+ #
+ # Default style is light gray.
fun format_p(str: String): String do
if opt_nocolors.value then return str
return str.light_gray
#
# The concept is reified here for a better organization and documentation
interface Metric
+
+ # Type of elements measured by this metric.
type ELM: Object
+
+ # Type of values used to measure elements.
type VAL: Object
+
+ # Type of data representation used to associate elements and values.
type RES: Map[ELM, VAL]
+ # The name of this metric (generally an acronym about the metric).
fun name: String is abstract
+
+ # A long and understandable description about what is measured by this metric.
fun desc: String is abstract
# Clear all results for this metric
end
end
+ # The sum of all the values.
+ fun sum: VAL is abstract
+
# The values standard derivation
fun std_dev: Float is abstract
# The set of element above the threshold
fun above_threshold: Set[ELM] is abstract
+
+ # Sort the metric keys by values
+ fun sort: Array[ELM] do
+ return values.keys_sorted_by_values(default_reverse_comparator)
+ end
end
# A Metric that collects integer data
redef type VAL: Int
redef type RES: Counter[ELM]
+ # `IntMetric` uses a Counter to store values in intern.
protected var values_cache = new Counter[ELM]
+
redef fun values do return values_cache
redef fun clear do values_cache.clear
- fun sum: Int do return values_cache.sum
+ redef fun sum do return values_cache.sum
redef fun max do
assert not values_cache.is_empty
end
# Values average
- redef fun avg: Float do return values_cache.avg
+ redef fun avg do return values_cache.avg
- redef fun std_dev: Float do return values_cache.std_dev
+ redef fun std_dev do return values_cache.std_dev
redef fun above_threshold do
var above = new HashSet[ELM]
redef type VAL: Float
+ # `FloatMetric` uses a Map to store values in intern.
protected var values_cache = new HashMap[ELM, VAL]
+
redef fun values do return values_cache
redef fun clear do values_cache.clear
- fun sum: Float do
+
+ redef fun sum do
var sum = 0.0
for v in values.values do sum += v
return sum
return sum / values.length.to_f
end
- redef fun std_dev: Float do
+ redef fun std_dev do
var sum = 0.0
for value in values.values do
sum += (value - avg).pow(2.to_f)
print "{"\t" * indent} sum: {sum}"
end
end
-
end
# A MetricSet is a metric holder
#
# It purpose is to be extended with a metric collect service
class MetricSet
+
+ # Type of element measured by this `MetricSet`.
type ELM: Object
# Metrics to compute
# The each parameter (in order)
var mparameters: Array[MParameter]
+ # Returns a parameter named `name`, if any.
+ fun mparameter_by_name(name: String): nullable MParameter
+ do
+ for p in mparameters do
+ if p.name == name then return p
+ end
+ return null
+ end
+
# The return type (null for a procedure)
var return_mtype: nullable MType
model.mmodule_importation_hierarchy.sort(mmodules)
var nmodules = new Array[AModule]
for mm in mmodules do
+ if mm.is_fictive then continue
nmodules.add(mmodule2node(mm).as(not null))
end
toolcontext.run_phases(nmodules)
# Registration of the nclassdef associated to each mclassdef
private var mclassdef2nclassdef = new HashMap[MClassDef, AClassdef]
+
+ # Retrieve the associated AST node of a mclassdef.
+ #
+ # This method is used to associate model entity with syntactic entities.
+ # If the class definition is not associated with a node, returns `null`.
+ fun mclassdef2node(mclassdef: MClassDef): nullable AClassdef do
+ return mclassdef2nclassdef.get_or_null(mclassdef)
+ end
end
redef class AModule
var initializers = new Array[MProperty]
for npropdef in nclassdef.n_propdefs do
if npropdef isa AMethPropdef then
- if npropdef.mpropdef == null then return # Skip broken attribute
+ if npropdef.mpropdef == null then return # Skip broken method
var at = npropdef.get_single_annotation("autoinit", self)
if at == null then continue # Skip non tagged init
npropdef.mpropdef.mproperty.is_autoinit = true
end
if npropdef isa AAttrPropdef then
- if npropdef.mpropdef == null then return # Skip broken attribute
+ var mreadpropdef = npropdef.mreadpropdef
+ if mreadpropdef == null or mreadpropdef.msignature == null then return # Skip broken attribute
if npropdef.noinit then continue # Skip noinit attribute
var atautoinit = npropdef.get_single_annotation("autoinit", self)
if atautoinit != null then
# For autoinit attributes, call the reader to force
# the lazy initialization of the attribute.
- initializers.add(npropdef.mreadpropdef.mproperty)
- npropdef.mreadpropdef.mproperty.is_autoinit = true
+ initializers.add(mreadpropdef.mproperty)
+ mreadpropdef.mproperty.is_autoinit = true
continue
end
if npropdef.has_value then continue
- var paramname = npropdef.mpropdef.mproperty.name.substring_from(1)
- var ret_type = npropdef.mpropdef.static_mtype
+ var paramname = mreadpropdef.mproperty.name
+ var ret_type = mreadpropdef.msignature.return_mtype
if ret_type == null then return
var mparameter = new MParameter(paramname, ret_type, false, ret_type isa MNullableType)
mparameters.add(mparameter)
var msetter = npropdef.mwritepropdef
if msetter == null then
- # No setter, it is a old-style attribute, so just add it
+ # No setter, it is a readonly attribute, so just add it
initializers.add(npropdef.mpropdef.mproperty)
npropdef.mpropdef.mproperty.is_autoinit = true
else
name = "unary +"
else if name == "-" and arity == 0 then
name = "unary -"
+ else if name == "~" and arity == 0 then
+ name = "unary ~"
else
if amethodid.is_binary and arity != 1 then
modelbuilder.error(self.n_signature, "Syntax Error: binary operator `{name}` requires exactly one parameter; got {arity}.")
new StructurePhase(toolcontext, doc),
new InheritanceListsPhase(toolcontext, doc),
new IntroRedefListPhase(toolcontext, doc),
+ new LinListPhase(toolcontext, doc),
new GraphPhase(toolcontext, doc),
new RenderHTMLPhase(toolcontext, doc): DocPhase]
import rapid_type_analysis
import compiler::separate_erasure_compiler
+import compiler::compiler_ffi::light_only
+
redef class ToolContext
redef fun process_options(args)
do
if nit_name == "-" then return "_minus"
if nit_name == "unary -" then return "_unary_minus"
if nit_name == "unary +" then return "_unary_plus"
+ if nit_name == "unary ~" then return "_unary_tilde"
if nit_name == "*" then return "_star"
if nit_name == "/" then return "_slash"
if nit_name == "%" then return "_percent"
if nit_name == "[]=" then return "_index_assign"
if nit_name == "==" then return "_equal"
if nit_name == "<" then return "_less"
- if nit_name == ">" then return "_geater"
+ if nit_name == ">" then return "_greater"
if nit_name == "<=" then return "_less_or_equal"
if nit_name == ">=" then return "_greater_or_equal"
if nit_name == "!=" then return "_not_equal"
if nit_name == "<<" then return "_left"
if nit_name == ">>" then return "_right"
if nit_name == "<=>" then return "_starship"
+ if nit_name == "|" then return "_pipe"
+ if nit_name == "^" then return "_caret"
+ if nit_name == "&" then return "_amp"
+ if nit_name == "~" then return "_tilde"
if nit_name.chars.last == '=' then return "{nit_name.substring(0, nit_name.length-1)}__assign"
return nit_name
assert ctype != null
return ctype
end
- return mangled_cname
+ return cname_normal_class
end
redef fun cname_blind do
return "struct nitni_instance *"
end
+ # Name of this type in C for normal classes (not extern and not primitive)
+ protected fun cname_normal_class: String do return mangled_cname
+
redef fun mangled_cname do return mclass.name
redef fun is_cprimitive do return mclass.kind == extern_kind or
var opt_meld = new OptionBool("Show diff between source and output using meld",
"--meld")
+ # --line-width
+ var opt_line_width = new OptionInt("Maximum length of lines (use 0 to disable automatic line breaks)", 80, "--line-width")
+
+ # --no-inline
+ var opt_no_inline = new OptionBool("Disable automatic one-liners", "--no-inline")
+
# Break too long string literals.
var opt_break_str = new OptionBool("Break too long string literals", "--break-strings")
# Check formatting instead of pretty printing.
#
- # This option create a tempory pretty printed file then check if
- # the output of the diff command on the source file and the pretty
- # printed one is empty.
+ # This option creates a temporary pretty printed file then checks if the
+ # output of the diff command on the source file and the pretty printed one is
+ # empty.
var opt_check = new OptionBool("Check format of Nit source files", "--check")
end
var opts = toolcontext.option_context
opts.add_option(toolcontext.opt_dir, toolcontext.opt_output)
opts.add_option(toolcontext.opt_diff, toolcontext.opt_meld, toolcontext.opt_check)
-opts.add_option(toolcontext.opt_break_str, toolcontext.opt_inline_do)
+opts.add_option(toolcontext.opt_line_width, toolcontext.opt_break_str, toolcontext.opt_inline_do)
+opts.add_option(toolcontext.opt_no_inline)
opts.add_option(toolcontext.opt_skip_empty)
toolcontext.tooldescription = "Usage: nitpretty [OPTION]... <file.nit>\n" +
# build model
var model = new Model
var mbuilder = new ModelBuilder(model, toolcontext)
-var mmodules = mbuilder.parse(arguments)
+var mmodules = mbuilder.parse_full(arguments)
mbuilder.run_phases
if mmodules.is_empty then
if not dir.file_exists then dir.mkdir
var v = new PrettyPrinterVisitor
+v.max_size = toolcontext.opt_line_width.value
if toolcontext.opt_break_str.value then
v.break_strings = true
end
if toolcontext.opt_skip_empty.value then
v.skip_empty = true
end
+if toolcontext.opt_no_inline.value then
+ v.no_inline = true
+end
for mmodule in mmodules do
var nmodule = mbuilder.mmodule2node(mmodule)
end
end
-redef class TLleq
+redef class TPipeeq
redef fun parser_index: Int
do
return 66
end
end
-redef class TGgeq
+redef class TCareteq
redef fun parser_index: Int
do
return 67
end
end
-redef class TDotdotdot
+redef class TAmpeq
redef fun parser_index: Int
do
return 68
end
end
-redef class TDotdot
+redef class TLleq
redef fun parser_index: Int
do
return 69
end
end
-redef class TDot
+redef class TGgeq
redef fun parser_index: Int
do
return 70
end
end
-redef class TPlus
+redef class TDotdotdot
redef fun parser_index: Int
do
return 71
end
end
-redef class TMinus
+redef class TDotdot
redef fun parser_index: Int
do
return 72
end
end
-redef class TStar
+redef class TDot
redef fun parser_index: Int
do
return 73
end
end
-redef class TStarstar
+redef class TPlus
redef fun parser_index: Int
do
return 74
end
end
-redef class TSlash
+redef class TMinus
redef fun parser_index: Int
do
return 75
end
end
-redef class TPercent
+redef class TStar
redef fun parser_index: Int
do
return 76
end
end
-redef class TEq
+redef class TStarstar
redef fun parser_index: Int
do
return 77
end
end
-redef class TNe
+redef class TSlash
redef fun parser_index: Int
do
return 78
end
end
-redef class TLt
+redef class TPercent
redef fun parser_index: Int
do
return 79
end
end
-redef class TLe
+redef class TPipe
redef fun parser_index: Int
do
return 80
end
end
-redef class TLl
+redef class TCaret
redef fun parser_index: Int
do
return 81
end
end
-redef class TGt
+redef class TAmp
redef fun parser_index: Int
do
return 82
end
end
-redef class TGe
+redef class TTilde
redef fun parser_index: Int
do
return 83
end
end
-redef class TGg
+redef class TEq
redef fun parser_index: Int
do
return 84
end
end
-redef class TStarship
+redef class TNe
redef fun parser_index: Int
do
return 85
end
end
-redef class TBang
+redef class TLt
redef fun parser_index: Int
do
return 86
end
end
-redef class TAt
+redef class TLe
redef fun parser_index: Int
do
return 87
end
end
-redef class TClassid
+redef class TLl
redef fun parser_index: Int
do
return 88
end
end
-redef class TId
+redef class TGt
redef fun parser_index: Int
do
return 89
end
end
-redef class TAttrid
+redef class TGe
redef fun parser_index: Int
do
return 90
end
end
-redef class TNumber
+redef class TGg
redef fun parser_index: Int
do
return 91
end
end
-redef class THexNumber
+redef class TStarship
redef fun parser_index: Int
do
return 92
end
end
-redef class TFloat
+redef class TBang
redef fun parser_index: Int
do
return 93
end
end
-redef class TString
+redef class TAt
redef fun parser_index: Int
do
return 94
end
end
-redef class TStartString
+redef class TSemi
redef fun parser_index: Int
do
return 95
end
end
-redef class TMidString
+redef class TClassid
redef fun parser_index: Int
do
return 96
end
end
-redef class TEndString
+redef class TId
redef fun parser_index: Int
do
return 97
end
end
-redef class TChar
+redef class TAttrid
redef fun parser_index: Int
do
return 98
end
end
-redef class TBadString
+redef class TNumber
redef fun parser_index: Int
do
return 99
end
end
-redef class TBadChar
+redef class THexNumber
redef fun parser_index: Int
do
return 100
end
end
-redef class TExternCodeSegment
+redef class TFloat
redef fun parser_index: Int
do
return 101
end
end
+redef class TString
+ redef fun parser_index: Int
+ do
+ return 102
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TStartString
+ redef fun parser_index: Int
+ do
+ return 103
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TMidString
+ redef fun parser_index: Int
+ do
+ return 104
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TEndString
+ redef fun parser_index: Int
+ do
+ return 105
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TChar
+ redef fun parser_index: Int
+ do
+ return 106
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TBadString
+ redef fun parser_index: Int
+ do
+ return 107
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TBadChar
+ redef fun parser_index: Int
+ do
+ return 108
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
+redef class TExternCodeSegment
+ redef fun parser_index: Int
+ do
+ return 109
+ end
+
+ init init_tk(loc: Location)
+ do
+ _location = loc
+ end
+end
+
redef class EOF
redef fun parser_index: Int
do
- return 102
+ return 110
end
end
return new TStarstareq.init_tk(location)
end
if accept_token == 67 then
- return new TLleq.init_tk(location)
+ return new TPipeeq.init_tk(location)
end
if accept_token == 68 then
- return new TGgeq.init_tk(location)
+ return new TCareteq.init_tk(location)
end
if accept_token == 69 then
- return new TDotdotdot.init_tk(location)
+ return new TAmpeq.init_tk(location)
end
if accept_token == 70 then
- return new TDotdot.init_tk(location)
+ return new TLleq.init_tk(location)
end
if accept_token == 71 then
- return new TDot.init_tk(location)
+ return new TGgeq.init_tk(location)
end
if accept_token == 72 then
- return new TPlus.init_tk(location)
+ return new TDotdotdot.init_tk(location)
end
if accept_token == 73 then
- return new TMinus.init_tk(location)
+ return new TDotdot.init_tk(location)
end
if accept_token == 74 then
- return new TStar.init_tk(location)
+ return new TDot.init_tk(location)
end
if accept_token == 75 then
- return new TStarstar.init_tk(location)
+ return new TPlus.init_tk(location)
end
if accept_token == 76 then
- return new TSlash.init_tk(location)
+ return new TMinus.init_tk(location)
end
if accept_token == 77 then
- return new TPercent.init_tk(location)
+ return new TStar.init_tk(location)
end
if accept_token == 78 then
- return new TEq.init_tk(location)
+ return new TStarstar.init_tk(location)
end
if accept_token == 79 then
- return new TNe.init_tk(location)
+ return new TSlash.init_tk(location)
end
if accept_token == 80 then
- return new TLt.init_tk(location)
+ return new TPercent.init_tk(location)
end
if accept_token == 81 then
- return new TLe.init_tk(location)
+ return new TPipe.init_tk(location)
end
if accept_token == 82 then
- return new TLl.init_tk(location)
+ return new TCaret.init_tk(location)
end
if accept_token == 83 then
- return new TGt.init_tk(location)
+ return new TAmp.init_tk(location)
end
if accept_token == 84 then
- return new TGe.init_tk(location)
+ return new TTilde.init_tk(location)
end
if accept_token == 85 then
- return new TGg.init_tk(location)
+ return new TEq.init_tk(location)
end
if accept_token == 86 then
- return new TStarship.init_tk(location)
+ return new TNe.init_tk(location)
end
if accept_token == 87 then
- return new TBang.init_tk(location)
+ return new TLt.init_tk(location)
end
if accept_token == 88 then
- return new TAt.init_tk(location)
+ return new TLe.init_tk(location)
end
if accept_token == 89 then
- return new TClassid.init_tk(location)
+ return new TLl.init_tk(location)
end
if accept_token == 90 then
- return new TId.init_tk(location)
+ return new TGt.init_tk(location)
end
if accept_token == 91 then
- return new TAttrid.init_tk(location)
+ return new TGe.init_tk(location)
end
if accept_token == 92 then
- return new TNumber.init_tk(location)
+ return new TGg.init_tk(location)
end
if accept_token == 93 then
- return new THexNumber.init_tk(location)
+ return new TStarship.init_tk(location)
end
if accept_token == 94 then
- return new TFloat.init_tk(location)
+ return new TBang.init_tk(location)
end
if accept_token == 95 then
- return new TString.init_tk(location)
+ return new TAt.init_tk(location)
end
if accept_token == 96 then
- return new TStartString.init_tk(location)
+ return new TSemi.init_tk(location)
end
if accept_token == 97 then
- return new TMidString.init_tk(location)
+ return new TClassid.init_tk(location)
end
if accept_token == 98 then
- return new TEndString.init_tk(location)
+ return new TId.init_tk(location)
end
if accept_token == 99 then
- return new TChar.init_tk(location)
+ return new TAttrid.init_tk(location)
end
if accept_token == 100 then
- return new TBadString.init_tk(location)
+ return new TNumber.init_tk(location)
end
if accept_token == 101 then
- return new TBadChar.init_tk(location)
+ return new THexNumber.init_tk(location)
end
if accept_token == 102 then
+ return new TFloat.init_tk(location)
+ end
+ if accept_token == 103 then
+ return new TString.init_tk(location)
+ end
+ if accept_token == 104 then
+ return new TStartString.init_tk(location)
+ end
+ if accept_token == 105 then
+ return new TMidString.init_tk(location)
+ end
+ if accept_token == 106 then
+ return new TEndString.init_tk(location)
+ end
+ if accept_token == 107 then
+ return new TChar.init_tk(location)
+ end
+ if accept_token == 108 then
+ return new TBadString.init_tk(location)
+ end
+ if accept_token == 109 then
+ return new TBadChar.init_tk(location)
+ end
+ if accept_token == 110 then
return new TExternCodeSegment.init_tk(location)
end
abort # unknown token index `accept_token`
slasheq = '/=';
percenteq = '%=';
starstareq = '**=';
+pipeeq = '|=';
+careteq = '^=';
+ampeq = '&=';
lleq = '<<=';
ggeq = '>>=';
dotdotdot = '...';
starstar = '**';
slash = '/';
percent = '%';
+pipe = '|';
+caret = '^';
+amp = '&';
+tilde = '~';
eq = '==';
ne = '!=';
lt = '<';
starship = '<=>';
bang='!';
at='@';
+semi=';';
classid = uppercase letter*;
id = lowercase letter*;
= moduledecl? [imports]:import* [extern_bodies]:extern_code_body* [classdefs]:topdef* implicit_main_class {-> New module(moduledecl, [imports.import], [extern_bodies.extern_code_block], [classdefs.classdef,implicit_main_class.classdef])};
moduledecl
- = [doc]:no redef visibility kwmodule no module_name annotation_withend [n2]:n1 {-> New moduledecl(doc.doc, redef.kwredef, visibility, kwmodule, module_name, annotation_withend.annotations)};
+ = [doc]:nd redef visibility kwmodule no module_name annotation_withend [n2]:n1 {-> New moduledecl(doc.doc, redef.kwredef, visibility, kwmodule, module_name, annotation_withend.annotations)};
import
- = {std} [doc]:no redef visibility kwimport no module_name annotation_withend [n2]:n1 {-> New import.std(visibility, kwimport, module_name, annotation_withend.annotations)}
- | {no} [doc]:no redef visibility kwimport no kwend [n2]:n1 {-> New import.no(visibility, kwimport, kwend)}
+ = {std} [doc]:nd redef visibility kwimport no module_name annotation_withend [n2]:n1 {-> New import.std(visibility, kwimport, module_name, annotation_withend.annotations)}
+ | {no} [doc]:nd redef visibility kwimport no kwend [n2]:n1 {-> New import.no(visibility, kwimport, kwend)}
;
topdef {-> classdef}
| {null} n? {-> Null}
;
implicit_main_meth {-> propdef}
- = [doc]:no stmts {-> New propdef.main_meth(Null, stmts.expr)}
- | {n} [doc]:no stmtsn {-> New propdef.main_meth(Null, stmtsn.expr)}
+ = [doc]:nd stmts {-> New propdef.main_meth(Null, stmts.expr)}
+ | {n} [doc]:nd stmtsn {-> New propdef.main_meth(Null, stmtsn.expr)}
;
/* CLASSES *******************************************************************/
classdef
- = [doc]:no redef visibility classkind no qclassid formaldefs extern_code_block? propdefs kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, qclassid.classid, [formaldefs.formaldef], extern_code_block, [propdefs.propdef], kwend)};
+ = [doc]:nd redef visibility classkind no qclassid extern_code_block? propdefs kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, qclassid.classid, Null, [], Null, extern_code_block, [propdefs.propdef], kwend)}
+ | {for} [doc]:nd redef visibility classkind no qclassid obra [n2]:no formaldefs cbra extern_code_block? propdefs kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, qclassid.classid, obra, [formaldefs.formaldef], cbra, extern_code_block, [propdefs.propdef], kwend)}
+ ;
+
redef {-> kwredef?}
= kwredef? {-> kwredef};
classkind
;
formaldefs {-> formaldef*}
- = obra no formaldef formaldefs_tail* [n2]:no cbra {-> [formaldef, formaldefs_tail.formaldef]}
- | {null} {-> []}
+ = formaldef formaldefs_tail* {-> [formaldef, formaldefs_tail.formaldef]}
+ | {empty} {->[]}
;
formaldefs_tail {-> formaldef}
= comma no formaldef {-> formaldef};
formaldef
- = classid annotations? typing_o {-> New formaldef(classid, typing_o.type, annotations)};
+ = classid annotations? typing_o no {-> New formaldef(classid, typing_o.type, annotations)};
superclass {-> propdef}
- = {super} [doc]:no redef visibility kwsuper [n2]:no type annotation_withend {-> New propdef.super(doc.doc, redef.kwredef, visibility, kwsuper, type, annotation_withend.annotations)}
+ = {super} [doc]:nd redef visibility kwsuper [n2]:no type annotation_withend {-> New propdef.super(doc.doc, redef.kwredef, visibility, kwsuper, type, annotation_withend.annotations)}
;
propdefs {-> propdef*}
= propdefn+ no {-> [propdefn.propdef]}
| {super} superclass {-> [superclass.propdef]}
- | {empty} no {-> []}
+ | {empty} nd {-> []}
;
propdefn {-> propdef}
= propdef n1 {-> propdef.propdef}
;
propdef~toplevel {-> propdef}
- = {meth} [doc]:no redef visibility kwmeth qmethid signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, stmtso.expr)}
- | {nobody} [doc]:no redef visibility kwmeth qmethid signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_withend_nonull.annotations, Null, Null, Null)}
-!toplevel| {intern_new} [doc]:no redef visibility kwnew qmethid? signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_withend_nonull.annotations, Null, Null, Null)}
-!toplevel| {new} [doc]:no redef visibility kwnew qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, Null, Null, stmtso.expr)}
- | {extern_implicit} [doc]:no redef visibility kwmeth qmethid signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_noend.annotations, extern_calls, extern_code_block, Null)}
-!toplevel| {var3} [doc]:no redef visibility kwvar id typing_o annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, annotation_withend.annotations, Null)}
-!toplevel| {var4} [doc]:no redef visibility kwvar id typing_o assign [n2]:no expr annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, expr.expr, annotation_withend.annotations, Null)}
-!toplevel| {var5} [doc]:no redef visibility kwvar id typing_o annotation_noend? kwdo stmtso kwend? {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, annotation_noend.annotations, stmtso.expr)}
-!toplevel| {init} [doc]:no redef visibility kwinit qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, kwinit, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, stmtso.expr)}
-!toplevel| {type} [doc]:no redef visibility kwtype classid typing annotation_withend {-> New propdef.type(doc.doc, redef.kwredef, visibility, kwtype, classid, typing.type, annotation_withend.annotations)}
-!toplevel| {extern_init_implicit} [doc]:no redef visibility kwnew qmethid? signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, extern_calls, extern_code_block, Null)}
+ = {meth} [doc]:nd redef visibility kwmeth qmethid signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, kwdo, stmtso.expr, kwend_o.kwend)}
+ | {nobody} [doc]:nd redef visibility kwmeth qmethid signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_withend_nonull.annotations, Null, Null, Null, Null, Null)}
+!toplevel| {intern_new} [doc]:nd redef visibility kwnew qmethid? signature annotation_withend_nonull {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_withend_nonull.annotations, Null, Null, Null, Null, Null)}
+!toplevel| {new} [doc]:nd redef visibility kwnew qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, Null, Null, kwdo, stmtso.expr, kwend_o.kwend)}
+ | {extern_implicit} [doc]:nd redef visibility kwmeth qmethid signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, kwmeth, Null, Null, qmethid.methid, signature.signature, annotation_noend.annotations, extern_calls, extern_code_block, Null, Null, Null)}
+!toplevel| {var3} [doc]:nd redef visibility kwvar id typing_o annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, Null, annotation_withend.annotations, Null, Null, Null)}
+!toplevel| {var4} [doc]:nd redef visibility kwvar id typing_o assign [n2]:no expr annotation_withend {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, assign, expr.expr, annotation_withend.annotations, Null, Null, Null)}
+!toplevel| {var5} [doc]:nd redef visibility kwvar id typing_o annotation_noend? kwdo stmtso kwend? {-> New propdef.attr(doc.doc, redef.kwredef, visibility, kwvar, id, typing_o.type, Null, Null, annotation_noend.annotations, kwdo, stmtso.expr, kwend)}
+!toplevel| {init} [doc]:nd redef visibility kwinit qmethid? signature annotation_noend? kwdo stmtso kwend_o {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, kwinit, Null, qmethid.methid, signature, annotation_noend.annotations, Null, Null, kwdo, stmtso.expr, kwend_o.kwend)}
+!toplevel| {type} [doc]:nd redef visibility kwtype classid typing annotation_withend {-> New propdef.type(doc.doc, redef.kwredef, visibility, kwtype, classid, typing.type, annotation_withend.annotations)}
+!toplevel| {extern_init_implicit} [doc]:nd redef visibility kwnew qmethid? signature annotation_noend? extern_calls extern_code_block {-> New propdef.meth(doc.doc, redef.kwredef, visibility, Null, Null, kwnew, qmethid.methid, signature, annotation_noend.annotations, extern_calls, extern_code_block, Null, Null, Null)}
!toplevel| {annot} line_annotation_forclass {-> line_annotation_forclass.propdef}
!toplevel| {super} superclass {-> superclass.propdef}
;
annotation_withend~nonull {-> annotations?}
- = {oneliner} kwis many_annotations {-> many_annotations.annotations}
- | {more} kwis n1 line_annotations kwend {-> line_annotations.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) }
!nonull | {null} {-> Null}
;
annotation_noend {-> annotations}
- = {oneliner} kwis many_annotations {-> many_annotations.annotations}
- | {more} kwis n1 line_annotations {-> line_annotations.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) }
;
visibility
| {starstar} starstar {-> New methid.starstar(starstar)}
| {slash} slash {-> New methid.slash(slash)}
| {percent} percent {-> New methid.percent(percent)}
+ | {pipe} pipe {-> New methid.pipe(pipe)}
+ | {caret} caret {-> New methid.caret(caret)}
+ | {amp} amp {-> New methid.amp(amp)}
+ | {tilde} tilde {-> New methid.tilde(tilde)}
| {eq} eq {-> New methid.eq(eq)}
| {ne} ne {-> New methid.ne(ne)}
| {le} le {-> New methid.le(le)}
/* TYPES *********************************************************************/
type~nobra~nopar {-> type}
- = {simple} kwnullable? classid annotations_o~nopar {-> New type(kwnullable, classid, [], annotations_o~nopar.annotations)}
-!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra annotations_o~nopar {-> New type(kwnullable, classid, [types.type], annotations_o~nopar.annotations)}
+ = {simple} kwnullable? classid annotations_o~nopar {-> New type(kwnullable, classid, Null, [], Null, annotations_o~nopar.annotations)}
+!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra annotations_o~nopar {-> New type(kwnullable, classid, obra, [types.type], cbra, annotations_o~nopar.annotations)}
;
types {-> type*}
= type types_tail* {-> [type, types_tail.type]};
| {slash} slasheq
| {percent} percenteq
| {starstar} starstareq
+ | {pipe} pipeeq
+ | {caret} careteq
+ | {amp} ampeq
| {ll} lleq
| {gg} ggeq
;
;
if~withelse {-> expr}
- = {onelineelse} kwif no expr [n2]:no kwthen stmt_withelse kwelse stmtso~withelse {-> New expr.if(kwif, expr, stmt_withelse.expr, stmtso~withelse.expr)}
-!withelse | {oneline} kwif no expr [n2]:no kwthen stmt {-> New expr.if(kwif, expr, stmt.expr, Null)}
-!withelse | {block} kwif no expr [n2]:no kwthen [n3]:n stmtsn elsepartblock {-> New expr.if(kwif, expr, stmtsn.expr, elsepartblock.expr)}
-!withelse | {emptyblock} kwif no expr [n2]:no kwthen [n3]:n? elsepartblock {-> New expr.if(kwif, expr, Null, elsepartblock.expr)}
+ = {onelineelse} kwif no expr [n2]:no kwthen stmt_withelse kwelse stmtso~withelse {-> New expr.if(kwif, expr, kwthen, stmt_withelse.expr, kwelse, stmtso~withelse.expr)}
+!withelse | {oneline} kwif no expr [n2]:no kwthen stmt {-> New expr.if(kwif, expr, kwthen, stmt.expr, Null, Null)}
+!withelse | {block} kwif no expr [n2]:no kwthen [n3]:n stmtsn kwelse stmtso {-> New expr.if(kwif, expr, kwthen, stmtsn.expr, kwelse, stmtso.expr)}
+!withelse | {emptyblock} kwif no expr [n2]:no kwthen [n3]:n? kwelse stmtso {-> New expr.if(kwif, expr, kwthen, Null, kwelse, stmtso.expr)}
+!withelse | {blocknoelse} kwif no expr [n2]:no kwthen [n3]:n stmtsn endblock {-> New expr.if(kwif, expr, kwthen, stmtsn.expr, Null, endblock.expr)}
+!withelse | {emptyblocknoelse} kwif no expr [n2]:no kwthen [n3]:n? endblock {-> New expr.if(kwif, expr, kwthen, Null, Null, endblock.expr)}
;
-elsepartblock {-> expr?}
- = {else} kwelse stmtso {-> stmtso.expr}
- | {empty} kwend {-> New expr.block([], kwend)}
+endblock {-> expr}
+ = {empty} kwend {-> New expr.block([], kwend)}
;
loop~withelse {-> expr}
;
for~withelse {-> expr}
- = kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso_withend label {-> New expr.for(kwfor, [ids.id], expr, kwdo, stmtso_withend.expr, label)}
- | {nolabel} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso~withelse {-> New expr.for(kwfor, [ids.id], expr, kwdo, stmtso~withelse.expr, Null)}
+ = kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso_withend label {-> New expr.for(kwfor, [ids.id], kwin, expr, kwdo, stmtso_withend.expr, label)}
+ | {nolabel} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo stmtso~withelse {-> New expr.for(kwfor, [ids.id], kwin, expr, kwdo, stmtso~withelse.expr, Null)}
;
with~withelse {-> expr}
;
assert~withelse {-> expr}
- = {else} kwassert assertid? expr kwelse stmtso~withelse {-> New expr.assert(kwassert, assertid.id, expr, stmtso~withelse.expr)}
-!withelse| {noelse} kwassert assertid? expr {-> New expr.assert(kwassert, assertid.id, expr, Null)}
+ = {else} kwassert assertid? expr kwelse stmtso~withelse {-> New expr.assert(kwassert, assertid.id, expr, kwelse, stmtso~withelse.expr)}
+!withelse| {noelse} kwassert assertid? expr {-> New expr.assert(kwassert, assertid.id, expr, Null, Null)}
;
assertid {-> id}
= id column {-> id};
;
expr_eq~nopar~nobra {-> expr}
- = expr_add~nopar~nobra {-> expr_add~nopar~nobra.expr}
- | {:eq} expr_add~nopar~nobra eq :no [expr2]:expr_add~nopar~nobra
- | {:ne} expr_add~nopar~nobra ne :no [expr2]:expr_add~nopar~nobra
- | {:lt} expr_add~nopar~nobra lt :no [expr2]:expr_add~nopar~nobra
- | {:le} expr_add~nopar~nobra le :no [expr2]:expr_add~nopar~nobra
- | {:ll} expr_eq~nopar~nobra ll :no [expr2]:expr_add~nopar~nobra
- | {:gt} expr_add~nopar~nobra gt :no [expr2]:expr_add~nopar~nobra
- | {:ge} expr_add~nopar~nobra ge :no [expr2]:expr_add~nopar~nobra
- | {:gg} expr_eq~nopar~nobra gg :no [expr2]:expr_add~nopar~nobra
- | {:starship} expr_add~nopar~nobra starship :no [expr2]:expr_add~nopar~nobra
- | {:isa} expr_add~nopar~nobra kwisa :no type~nobra
+ = expr_bitor~nopar~nobra {-> expr_bitor~nopar~nobra.expr}
+ | {:eq} expr_bitor~nopar~nobra eq :no [expr2]:expr_bitor~nopar~nobra
+ | {:ne} expr_bitor~nopar~nobra ne :no [expr2]:expr_bitor~nopar~nobra
+ | {:lt} expr_bitor~nopar~nobra lt :no [expr2]:expr_bitor~nopar~nobra
+ | {:le} expr_bitor~nopar~nobra le :no [expr2]:expr_bitor~nopar~nobra
+ | {:gt} expr_bitor~nopar~nobra gt :no [expr2]:expr_bitor~nopar~nobra
+ | {:ge} expr_bitor~nopar~nobra ge :no [expr2]:expr_bitor~nopar~nobra
+ | {:starship} expr_bitor~nopar~nobra starship :no [expr2]:expr_bitor~nopar~nobra
+ | {:isa} expr_bitor~nopar~nobra kwisa :no type~nobra
+ ;
+
+expr_bitor~nopar~nobra {-> expr}
+ = [expr]:expr_bitxor~nopar~nobra {-> expr.expr}
+ | {:pipe} expr_bitor~nopar~nobra pipe :no [expr2]:expr_bitxor~nopar~nobra
+ ;
+
+expr_bitxor~nopar~nobra {-> expr}
+ = [expr]:expr_bitand~nopar~nobra {-> expr.expr}
+ | {:caret} expr_bitxor~nopar~nobra caret :no [expr2]:expr_bitand~nopar~nobra
+ ;
+
+expr_bitand~nopar~nobra {-> expr}
+ = [expr]:expr_shift~nopar~nobra {-> expr.expr}
+ | {:amp} expr_bitand~nopar~nobra amp :no [expr2]:expr_shift~nopar~nobra
+ ;
+
+expr_shift~nopar~nobra {-> expr}
+ = [expr]:expr_add~nopar~nobra {-> expr.expr}
+ | {:ll} expr_shift~nopar~nobra ll :no [expr2]:expr_add~nopar~nobra
+ | {:gg} expr_shift~nopar~nobra gg :no [expr2]:expr_add~nopar~nobra
;
expr_add~nopar~nobra {-> expr}
= expr_new~nopar~nobra {-> expr_new~nopar~nobra.expr}
| {:uminus} minus expr_minus~nobra
| {:uplus} plus expr_minus~nobra
+ | {:utilde} tilde expr_minus~nobra
| {:once} kwonce :no expr_minus~nobra
;
| {as_cast} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no type [n4]:no cpar {-> New expr.as_cast(expr_atom~nopar~nobra.expr, kwas, opar, type, cpar)}
| {as_notnull} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no kwnot [n4]:no kwnull [n5]:no cpar {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, opar, kwnot, kwnull, cpar)}
| {as_notnull2}expr_atom~nopar~nobra dot no kwas [n2]:no kwnot [n4]:no kwnull {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, Null, kwnot, kwnull, Null)}
- | {vararg} [expr]:expr_atom~nopar~nobra dotdotdot {-> New expr.vararg(expr.expr, dotdotdot)}
+ ;
+
+arg~nopar~nobra {-> expr}
+ = [expr]:expr~nopar~nobra {-> expr.expr}
+ | {vararg} [expr]:expr~nopar~nobra dotdotdot {-> New expr.vararg(expr.expr, dotdotdot)}
+ | {namedarg} id assign [expr]:expr~nopar~nobra {-> New expr.namedarg(id, assign, expr.expr) }
;
expr_single~nopar~nobra {-> expr}
| {superstring} superstring {-> superstring.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, expr2.expr, cbra, annotations_o.annotations)}
-!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra annotations_o {-> New expr.orange(obra, expr, expr2.expr, cbra, annotations_o.annotations)}
+!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)}
+!nobra!nopar | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra annotations_o {-> New expr.orange(obra, expr, dotdot, expr2.expr, cbra, annotations_o.annotations)}
!nobra!nopar | {array} obra no array_items typing_o cbra annotations_o {-> New expr.array(obra, [array_items.expr], typing_o.type, cbra, annotations_o.annotations)}
;
;
array_item {-> expr}
= expr no {-> expr}
- | {for} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo [block]:array_item {-> New expr.for(kwfor, [ids.id], expr, kwdo, block.expr, Null)}
- | {if} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:array_item {-> New expr.if(kwif, expr, then.expr, Null)}
+ | {for} kwfor no [ids]:idlist [n2]:no kwin [n3]:no expr [n4]:no kwdo [block]:array_item {-> New expr.for(kwfor, [ids.id], kwin, expr, kwdo, block.expr, Null)}
+ | {if} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:array_item {-> New expr.if(kwif, expr, kwthen, then.expr, Null, Null)}
;
superstring {-> expr}
/* ANNOTATIONS *******************************************************************/
annotations~nopar {-> annotations}
- = {one} at one_annotation~nopar {-> New annotations(at, Null, [one_annotation~nopar.annotation], Null)}
- | {many} at opar no annotation_list [n2]:no cpar {-> New annotations(at, opar, [annotation_list.annotation], cpar)}
+ = {one} at one_annotation~nopar {-> New annotations(Null, at, Null, [one_annotation~nopar.annotation], Null, Null)}
+ | {many} at opar no annotation_list [n2]:no cpar {-> New annotations(Null, at, opar, [annotation_list.annotation], cpar, Null)}
;
annotations_o~nopar {-> annotations?}
= annotations~nopar {-> annotations~nopar.annotations}
!nopar | {args} redef visibility atid opar no at_args [n2]:no cpar annotations_o~nopar {-> New annotation(Null, redef.kwredef, visibility, atid, opar, [at_args.expr], cpar, annotations_o~nopar.annotations)}
;
-many_annotations {-> annotations}
- = {many} annotation_list {-> New annotations(Null, Null, [annotation_list.annotation], Null)}
- ;
-
annotation_list {-> annotation*}
= {many} one_annotation_list annotations_tail* {-> [one_annotation_list.annotation, annotations_tail.annotation] }
;
= comma no one_annotation_list {-> one_annotation_list.annotation}
;
-line_annotations {-> annotations}
- = line_annotation+ {-> New annotations(Null, Null, [line_annotation.annotation], Null) }
- ;
line_annotation {-> annotation}
- = [doc]:no redef visibility atid annotations? n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, Null, [], Null, annotations)}
- | {args} [doc]:no redef visibility atid opar no at_args cpar annotations? n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, opar, [at_args.expr], cpar, annotations)}
- | {nopar} [doc]:no redef visibility atid at_args_nopar n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, Null, [at_args_nopar.expr], Null, Null)}
+ = [doc]:nd redef visibility atid annotations? n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, Null, [], Null, annotations)}
+ | {args} [doc]:nd redef visibility atid opar no at_args cpar annotations? n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, opar, [at_args.expr], cpar, annotations)}
+ | {nopar} [doc]:nd redef visibility atid at_args_nopar n1 {-> New annotation(doc.doc, redef.kwredef, visibility, atid.atid, Null, [at_args_nopar.expr], Null, Null)}
;
line_annotation_forclass {-> propdef}
- = [doc]:no atid_forclass annotations? {-> New propdef.annot(doc.doc, Null, Null, atid_forclass.atid, Null, [], Null, annotations)}
- | {args} [doc]:no atid_forclass opar no at_args cpar annotations? {-> New propdef.annot(doc.doc, Null, Null, atid_forclass.atid, opar, [at_args.expr], cpar, annotations)}
- | {nopar} [doc]:no atid_forclass at_args_nopar {-> New propdef.annot(doc.doc, Null, Null, atid_forclass.atid, Null, [at_args_nopar.expr], Null, Null)}
+ = [doc]:nd atid_forclass annotations? {-> New propdef.annot(doc.doc, Null, Null, atid_forclass.atid, Null, [], Null, annotations)}
+ | {args} [doc]:nd atid_forclass opar no at_args cpar annotations? {-> New propdef.annot(doc.doc, Null, Null, atid_forclass.atid, opar, [at_args.expr], cpar, annotations)}
+ | {nopar} [doc]:nd atid_forclass at_args_nopar {-> New propdef.annot(doc.doc, Null, Null, atid_forclass.atid, Null, [at_args_nopar.expr], Null, Null)}
;
at_args~nopar {-> expr* }
;
braargs {-> exprs}
= obra no expr_list cbra {-> New exprs.bra(obra, [expr_list.expr], cbra)};
-args_list {-> exprs}
- = expr_list {-> New exprs.list([expr_list.expr])};
expr_list {-> expr*}
- = expr [n2]:no expr_tail* {-> [expr, expr_tail.expr]};
+ = arg [n2]:no expr_tail* {-> [arg.expr, expr_tail.expr]};
expr_tail {-> expr}
- = comma no expr [n2]:no {-> expr};
+ = comma no arg [n2]:no {-> arg.expr};
idlist {-> id*}
= opar no idlist_nopar [n2]:no cpar {-> [idlist_nopar.id]}
| {nopar} idlist_nopar {-> [idlist_nopar.id]}
= kwend? {-> kwend}
;
-n1 = {a} comment | {b} eol;
-n {-> doc?}
- = {a} n2? comment+ {-> New doc([comment])}
- | {b} n2 {-> Null}
+/* A single hard break */
+n1 = {a} comment | {b} eol | {c} semi;
+
+/* A mandatory hard break, returns the last comment */
+n~nosemi {-> doc?}
+ = {a} n2* comment+ {-> New doc([comment])}
+ | {b} n2+ {-> Null}
+!nosemi | {c} n2* comment* semi n? {-> n.doc }
;
-no {-> doc?}
+
+/* An optional hard break, returns the last comment.
+ * Used mainly to introduce optional documentation */
+nd {-> doc?}
= {empty} {-> Null}
| n {-> n.doc}
;
+/* An optional soft break.
+ * Used when a unambiguous line break or comment could be inserted/ */
+no
+ = {empty}
+ | n_nosemi
+ ;
+
n2
- = {a} n2? comment+ eol+
- | {b} eol+
+ = {a} comment* eol
;
/*****************************************************************************/
| {intrude} kwintrude
;
-classdef= {std} doc? kwredef? visibility classkind [id]:classid? [formaldefs]:formaldef* extern_code_block? [propdefs]:propdef* kwend
+classdef= {std} doc? kwredef? visibility classkind [id]:classid? obra? [formaldefs]:formaldef* cbra? extern_code_block? [propdefs]:propdef* kwend
| {top} [propdefs]:propdef*
| {main} [propdefs]:propdef*
;
formaldef = [id]:classid type? annotations?;
-propdef = {attr} doc? kwredef? visibility kwvar [id2]:id type? expr? annotations? [block]:expr?
+propdef = {attr} doc? kwredef? visibility kwvar [id2]:id type? assign? expr? annotations? kwdo? [block]:expr? kwend?
| {main_meth} kwredef? [block]:expr?
| {type} doc? kwredef? visibility kwtype [id]:classid type annotations?
- | {meth} doc? kwredef? visibility kwmeth? kwinit? kwnew? methid? signature annotations? extern_calls? extern_code_block? [block]:expr?
+ | {meth} doc? kwredef? visibility kwmeth? kwinit? kwnew? methid? signature annotations? extern_calls? extern_code_block? kwdo? [block]:expr? kwend?
| {super} doc? kwredef? visibility kwsuper type annotations?
| {annot} doc? kwredef? visibility? atid opar? [args]:expr* cpar? annotations?
;
-methid = {id} id | {plus} plus | {minus} minus | {star} star | {starstar} starstar | {slash} slash | {percent} percent | {eq} eq | {ne} ne | {le} le | {ge} ge | {lt} lt | {gt} gt | {ll} ll | {gg} gg | {bra} obra cbra | {starship} starship | {assign} id assign | {braassign} obra cbra assign;
+methid
+ = {id} id
+ | {plus} [op]:plus
+ | {minus} [op]:minus
+ | {star} [op]:star
+ | {starstar} [op]:starstar
+ | {slash} [op]:slash
+ | {percent} [op]:percent
+ | {eq} [op]:eq
+ | {ne} [op]:ne
+ | {le} [op]:le
+ | {ge} [op]:ge
+ | {lt} [op]:lt
+ | {gt} [op]:gt
+ | {ll} [op]:ll
+ | {gg} [op]:gg
+ | {starship} [op]:starship
+ | {pipe} [op]:pipe
+ | {caret} [op]:caret
+ | {amp} [op]:amp
+ | {tilde} [op]:tilde
+ | {bra} obra cbra
+ | {assign} id assign
+ | {braassign} obra cbra assign
+ ;
signature = opar? [params]:param* cpar? type?;
param = id type? dotdotdot? annotations?
;
-type = kwnullable? [id]:classid [types]:type* annotations?;
+type = kwnullable? [id]:classid obra? [types]:type* cbra? annotations?;
label = kwlabel id?;
| {abort} kwabort
| {continue} kwcontinue? label?
| {do} kwdo [block]:expr? label?
- | {if} kwif expr [then]:expr? [else]:expr?
+ | {if} kwif expr kwthen [then]:expr? kwelse? [else]:expr?
| {ifexpr} kwif expr kwthen [then]:expr kwelse [else]:expr
| {while} kwwhile expr kwdo [block]:expr? label?
| {loop} kwloop [block]:expr? label?
- | {for} kwfor [ids]:id* expr kwdo [block]:expr? label?
+ | {for} kwfor [ids]:id* kwin expr kwdo [block]:expr? label?
| {with} kwwith expr kwdo [block]:expr? label?
- | {assert} kwassert id? expr [else]:expr?
+ | {assert} kwassert id? expr kwelse? [else]:expr?
| {once} kwonce expr
| {send} expr
| {binop} expr [expr2]:expr
| {starstar} expr [op]:starstar [expr2]:expr
| {slash} expr [op]:slash [expr2]:expr
| {percent} expr [op]:percent [expr2]:expr
- | {uminus} minus expr
- | {uplus} plus expr
+ | {pipe} expr [op]:pipe [expr2]:expr
+ | {caret} expr [op]:caret [expr2]:expr
+ | {amp} expr [op]:amp [expr2]:expr
+ | {uminus} [op]:minus expr
+ | {uplus} [op]:plus expr
+ | {utilde} [op]:tilde expr
| {new} kwnew type id? [args]:exprs
| {attr} expr [id]:attrid
| {attr_assign} expr [id]:attrid assign [value]:expr
| {var_assign} id assign [value]:expr
| {var_reassign} id assign_op [value]:expr
| {range} expr [expr2]:expr annotations?
- | {crange} obra expr [expr2]:expr cbra annotations?
- | {orange} obra expr [expr2]:expr [cbra]:obra annotations?
+ | {crange} obra expr dotdot [expr2]:expr cbra annotations?
+ | {orange} obra expr dotdot [expr2]:expr [cbra]:obra annotations?
| {array} obra [exprs]:expr* type? cbra annotations?
| {self} kwself annotations?
| {implicit_self}
| {isset_attr} kwisset expr [id]:attrid
| {debug_type} kwdebug kwtype expr type
| {vararg} expr dotdotdot
+ | {namedarg} id assign expr
| {type} type
| {methid} expr [id]:methid
| {at} annotations
| {slash} [op]:slasheq
| {percent} [op]:percenteq
| {starstar} [op]:starstareq
+ | {pipe} [op]:pipeeq
+ | {caret} [op]:careteq
+ | {amp} [op]:ampeq
| {ll} [op]:lleq
| {gg} [op]:ggeq
;
doc = comment+;
-annotations = at? opar? [items]:annotation* cpar?;
+annotations = kwis? at? opar? [items]:annotation* cpar? kwend?;
annotation = doc? kwredef? visibility? atid opar? [args]:expr* cpar? annotations?;
new ReduceAction24(5),
new ReduceAction26(6),
new ReduceAction27(6),
+ new ReduceAction28(6),
+ new ReduceAction29(6),
new ReduceAction22(7),
- new ReduceAction29(7),
- new ReduceAction30(8),
- new ReduceAction31(8),
+ new ReduceAction31(7),
new ReduceAction32(8),
new ReduceAction33(8),
new ReduceAction34(8),
- new ReduceAction35(9),
- new ReduceAction36(9),
+ new ReduceAction35(8),
+ new ReduceAction36(8),
new ReduceAction37(9),
- new ReduceAction38(10),
- new ReduceAction39(11),
- new ReduceAction40(11),
- new ReduceAction41(12),
- new ReduceAction42(13),
- new ReduceAction43(13),
+ new ReduceAction38(9),
+ new ReduceAction39(9),
+ new ReduceAction40(10),
+ new ReduceAction41(11),
+ new ReduceAction42(11),
+ new ReduceAction43(12),
new ReduceAction44(13),
- new ReduceAction45(14),
- new ReduceAction46(15),
- new ReduceAction47(15),
+ new ReduceAction45(13),
+ new ReduceAction46(13),
+ new ReduceAction47(14),
new ReduceAction48(15),
new ReduceAction49(15),
new ReduceAction50(15),
new ReduceAction70(15),
new ReduceAction71(15),
new ReduceAction72(15),
- new ReduceAction72(15),
- new ReduceAction74(16),
- new ReduceAction75(16),
+ new ReduceAction73(15),
+ new ReduceAction74(15),
+ new ReduceAction74(15),
+ new ReduceAction76(16),
+ new ReduceAction77(16),
new ReduceAction22(16),
- new ReduceAction74(17),
- new ReduceAction78(17),
- new ReduceAction79(18),
- new ReduceAction80(18),
+ new ReduceAction76(17),
+ new ReduceAction80(17),
new ReduceAction81(18),
new ReduceAction82(18),
new ReduceAction83(18),
- new ReduceAction84(19),
- new ReduceAction85(19),
+ new ReduceAction84(18),
+ new ReduceAction85(18),
new ReduceAction86(19),
new ReduceAction87(19),
new ReduceAction88(19),
new ReduceAction100(19),
new ReduceAction101(19),
new ReduceAction102(19),
- new ReduceAction103(20),
- new ReduceAction104(20),
- new ReduceAction105(20),
- new ReduceAction106(20),
- new ReduceAction107(21),
- new ReduceAction108(21),
- new ReduceAction37(21),
- new ReduceAction110(22),
- new ReduceAction111(23),
- new ReduceAction112(23),
- new ReduceAction113(23),
- new ReduceAction114(23),
- new ReduceAction115(23),
- new ReduceAction116(24),
- new ReduceAction117(24),
+ new ReduceAction103(19),
+ new ReduceAction104(19),
+ new ReduceAction105(19),
+ new ReduceAction106(19),
+ new ReduceAction107(19),
+ new ReduceAction108(19),
+ new ReduceAction109(20),
+ new ReduceAction110(20),
+ new ReduceAction111(20),
+ new ReduceAction112(20),
+ new ReduceAction113(21),
+ new ReduceAction114(21),
+ new ReduceAction39(21),
+ new ReduceAction116(22),
+ new ReduceAction117(23),
+ new ReduceAction118(23),
+ new ReduceAction119(23),
+ new ReduceAction120(23),
+ new ReduceAction121(23),
+ new ReduceAction122(24),
+ new ReduceAction123(24),
new ReduceAction22(24),
- new ReduceAction119(25),
- new ReduceAction120(26),
- new ReduceAction120(26),
- new ReduceAction122(26),
- new ReduceAction123(27),
- new ReduceAction124(27),
- new ReduceAction125(27),
- new ReduceAction126(28),
- new ReduceAction127(28),
- new ReduceAction128(28),
- new ReduceAction129(28),
- new ReduceAction130(28),
- new ReduceAction131(28),
+ new ReduceAction125(25),
+ new ReduceAction126(26),
+ new ReduceAction126(26),
+ new ReduceAction128(26),
+ new ReduceAction129(27),
+ new ReduceAction130(27),
+ new ReduceAction131(27),
+ new ReduceAction132(28),
+ new ReduceAction133(28),
+ new ReduceAction134(28),
+ new ReduceAction135(28),
+ new ReduceAction136(28),
+ new ReduceAction137(28),
new ReduceAction22(29),
- new ReduceAction133(29),
- new ReduceAction134(30),
- new ReduceAction135(31),
- new ReduceAction136(31),
- new ReduceAction137(32),
+ new ReduceAction139(29),
+ new ReduceAction140(30),
+ new ReduceAction141(31),
+ new ReduceAction142(31),
+ new ReduceAction143(32),
new ReduceAction22(32),
- new ReduceAction139(33),
- new ReduceAction140(34),
- new ReduceAction141(34),
- new ReduceAction142(34),
- new ReduceAction143(34),
- new ReduceAction144(35),
- new ReduceAction145(35),
- new ReduceAction146(36),
- new ReduceAction146(37),
- new ReduceAction146(38),
+ new ReduceAction145(33),
+ new ReduceAction146(34),
+ new ReduceAction147(34),
+ new ReduceAction148(34),
+ new ReduceAction149(34),
+ new ReduceAction150(35),
+ new ReduceAction151(35),
+ new ReduceAction152(36),
+ new ReduceAction152(37),
+ new ReduceAction152(38),
new ReduceAction22(38),
- new ReduceAction150(39),
- new ReduceAction151(39),
- new ReduceAction152(39),
- new ReduceAction153(39),
- new ReduceAction154(40),
- new ReduceAction155(40),
- new ReduceAction156(41),
- new ReduceAction157(41),
- new ReduceAction158(42),
- new ReduceAction159(42),
- new ReduceAction150(43),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction163(44),
- new ReduceAction164(44),
- new ReduceAction165(44),
- new ReduceAction166(44),
- new ReduceAction167(44),
- new ReduceAction168(44),
+ new ReduceAction156(39),
+ new ReduceAction157(39),
+ new ReduceAction158(39),
+ new ReduceAction159(39),
+ new ReduceAction160(40),
+ new ReduceAction161(40),
+ new ReduceAction162(41),
+ new ReduceAction163(41),
+ new ReduceAction164(42),
+ new ReduceAction165(42),
+ new ReduceAction156(43),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
new ReduceAction169(44),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction153(44),
- new ReduceAction177(44),
- new ReduceAction178(44),
- new ReduceAction179(44),
- new ReduceAction178(44),
- new ReduceAction181(44),
- new ReduceAction182(44),
+ new ReduceAction170(44),
+ new ReduceAction171(44),
+ new ReduceAction172(44),
+ new ReduceAction173(44),
+ new ReduceAction174(44),
+ new ReduceAction175(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
+ new ReduceAction159(44),
new ReduceAction183(44),
- new ReduceAction182(44),
+ new ReduceAction184(44),
new ReduceAction185(44),
- new ReduceAction186(44),
+ new ReduceAction184(44),
new ReduceAction187(44),
new ReduceAction188(44),
new ReduceAction189(44),
new ReduceAction188(44),
new ReduceAction191(44),
new ReduceAction192(44),
- new ReduceAction191(44),
+ new ReduceAction193(44),
new ReduceAction194(44),
- new ReduceAction195(45),
- new ReduceAction196(45),
- new ReduceAction197(46),
- new ReduceAction198(46),
- new ReduceAction199(46),
- new ReduceAction200(46),
- new ReduceAction201(47),
- new ReduceAction202(47),
- new ReduceAction203(47),
- new ReduceAction204(47),
- new ReduceAction205(47),
- new ReduceAction206(47),
+ new ReduceAction195(44),
+ new ReduceAction194(44),
+ new ReduceAction197(44),
+ new ReduceAction198(44),
+ new ReduceAction197(44),
+ new ReduceAction200(44),
+ new ReduceAction201(45),
+ new ReduceAction202(45),
+ new ReduceAction203(46),
+ new ReduceAction204(46),
+ new ReduceAction205(46),
+ new ReduceAction206(46),
new ReduceAction207(47),
new ReduceAction208(47),
- new ReduceAction205(47),
- new ReduceAction206(47),
+ new ReduceAction209(47),
+ new ReduceAction210(47),
new ReduceAction211(47),
new ReduceAction212(47),
new ReduceAction213(47),
new ReduceAction214(47),
- new ReduceAction215(47),
- new ReduceAction216(47),
- new ReduceAction213(47),
- new ReduceAction214(47),
+ new ReduceAction211(47),
+ new ReduceAction212(47),
+ new ReduceAction217(47),
+ new ReduceAction218(47),
new ReduceAction219(47),
new ReduceAction220(47),
new ReduceAction221(47),
new ReduceAction222(47),
- new ReduceAction223(47),
- new ReduceAction224(47),
+ new ReduceAction219(47),
+ new ReduceAction220(47),
new ReduceAction225(47),
new ReduceAction226(47),
new ReduceAction227(47),
- new ReduceAction224(47),
- new ReduceAction225(47),
+ new ReduceAction228(47),
+ new ReduceAction229(47),
new ReduceAction230(47),
new ReduceAction231(47),
new ReduceAction232(47),
new ReduceAction233(47),
- new ReduceAction234(47),
- new ReduceAction235(47),
- new ReduceAction232(47),
- new ReduceAction233(47),
+ new ReduceAction230(47),
+ new ReduceAction231(47),
+ new ReduceAction236(47),
+ new ReduceAction237(47),
new ReduceAction238(47),
- new ReduceAction239(48),
- new ReduceAction240(48),
- new ReduceAction241(48),
- new ReduceAction242(48),
- new ReduceAction243(48),
- new ReduceAction244(48),
+ new ReduceAction239(47),
+ new ReduceAction240(47),
+ new ReduceAction241(47),
+ new ReduceAction238(47),
+ new ReduceAction239(47),
+ new ReduceAction244(47),
new ReduceAction245(48),
new ReduceAction246(48),
- new ReduceAction247(49),
- new ReduceAction248(49),
- new ReduceAction249(50),
- new ReduceAction250(50),
- new ReduceAction251(50),
- new ReduceAction252(50),
- new ReduceAction253(50),
- new ReduceAction150(51),
- new ReduceAction152(51),
- new ReduceAction256(52),
- new ReduceAction257(52),
- new ReduceAction258(53),
- new ReduceAction259(53),
- new ReduceAction260(54),
- new ReduceAction261(54),
- new ReduceAction262(55),
- new ReduceAction263(55),
- new ReduceAction264(56),
- new ReduceAction265(56),
- new ReduceAction153(56),
- new ReduceAction267(57),
- new ReduceAction268(57),
- new ReduceAction269(57),
- new ReduceAction270(57),
- new ReduceAction271(58),
- new ReduceAction153(59),
- new ReduceAction273(59),
- new ReduceAction153(60),
- new ReduceAction275(60),
- new ReduceAction276(60),
- new ReduceAction277(60),
- new ReduceAction278(60),
- new ReduceAction153(61),
- new ReduceAction280(61),
- new ReduceAction153(62),
- new ReduceAction282(62),
- new ReduceAction283(62),
- new ReduceAction284(62),
- new ReduceAction285(62),
- new ReduceAction286(62),
- new ReduceAction287(62),
- new ReduceAction288(62),
- new ReduceAction289(62),
- new ReduceAction290(62),
- new ReduceAction291(62),
- new ReduceAction153(63),
- new ReduceAction293(63),
- new ReduceAction294(63),
- new ReduceAction153(64),
- new ReduceAction296(64),
- new ReduceAction297(64),
- new ReduceAction298(64),
- new ReduceAction153(65),
- new ReduceAction300(65),
- new ReduceAction153(66),
- new ReduceAction302(66),
- new ReduceAction303(66),
- new ReduceAction304(66),
- new ReduceAction153(67),
- new ReduceAction306(67),
- new ReduceAction307(67),
- new ReduceAction308(67),
- new ReduceAction309(67),
- new ReduceAction153(68),
- new ReduceAction311(68),
- new ReduceAction312(68),
- new ReduceAction177(68),
+ new ReduceAction247(48),
+ new ReduceAction248(48),
+ new ReduceAction249(48),
+ new ReduceAction250(48),
+ new ReduceAction251(48),
+ new ReduceAction252(48),
+ new ReduceAction253(48),
+ new ReduceAction254(48),
+ new ReduceAction255(48),
+ new ReduceAction256(49),
+ new ReduceAction257(49),
+ new ReduceAction258(50),
+ new ReduceAction259(50),
+ new ReduceAction260(50),
+ new ReduceAction261(50),
+ new ReduceAction262(50),
+ new ReduceAction263(50),
+ new ReduceAction264(50),
+ new ReduceAction265(50),
+ new ReduceAction158(51),
+ new ReduceAction267(52),
+ new ReduceAction268(52),
+ new ReduceAction269(53),
+ new ReduceAction270(53),
+ new ReduceAction271(54),
+ new ReduceAction272(54),
+ new ReduceAction273(55),
+ new ReduceAction274(55),
+ new ReduceAction275(56),
+ new ReduceAction276(56),
+ new ReduceAction159(56),
+ new ReduceAction278(57),
+ new ReduceAction279(57),
+ new ReduceAction280(57),
+ new ReduceAction281(57),
+ new ReduceAction282(58),
+ new ReduceAction159(59),
+ new ReduceAction284(59),
+ new ReduceAction159(60),
+ new ReduceAction286(60),
+ new ReduceAction287(60),
+ new ReduceAction288(60),
+ new ReduceAction289(60),
+ new ReduceAction159(61),
+ new ReduceAction291(61),
+ new ReduceAction159(62),
+ new ReduceAction293(62),
+ new ReduceAction294(62),
+ new ReduceAction295(62),
+ new ReduceAction296(62),
+ new ReduceAction297(62),
+ new ReduceAction298(62),
+ new ReduceAction299(62),
+ new ReduceAction300(62),
+ new ReduceAction159(63),
+ new ReduceAction302(63),
+ new ReduceAction159(64),
+ new ReduceAction304(64),
+ new ReduceAction159(65),
+ new ReduceAction306(65),
+ new ReduceAction159(66),
+ new ReduceAction308(66),
+ new ReduceAction309(66),
+ new ReduceAction159(67),
+ new ReduceAction311(67),
+ new ReduceAction312(67),
+ new ReduceAction159(68),
new ReduceAction314(68),
- new ReduceAction178(68),
- new ReduceAction316(68),
- new ReduceAction179(68),
- new ReduceAction318(68),
- new ReduceAction178(68),
+ new ReduceAction315(68),
new ReduceAction316(68),
- new ReduceAction181(68),
- new ReduceAction322(68),
- new ReduceAction182(68),
- new ReduceAction324(68),
- new ReduceAction183(68),
- new ReduceAction326(68),
- new ReduceAction182(68),
- new ReduceAction324(68),
- new ReduceAction185(68),
- new ReduceAction330(68),
- new ReduceAction186(68),
- new ReduceAction332(68),
- new ReduceAction187(68),
- new ReduceAction334(68),
- new ReduceAction335(68),
- new ReduceAction336(68),
- new ReduceAction337(68),
- new ReduceAction338(68),
- new ReduceAction339(68),
- new ReduceAction340(68),
- new ReduceAction341(68),
- new ReduceAction338(68),
- new ReduceAction339(68),
- new ReduceAction344(68),
- new ReduceAction345(68),
- new ReduceAction346(68),
- new ReduceAction347(68),
- new ReduceAction348(69),
- new ReduceAction349(69),
- new ReduceAction350(69),
- new ReduceAction351(69),
- new ReduceAction352(69),
- new ReduceAction353(69),
- new ReduceAction354(69),
- new ReduceAction355(69),
- new ReduceAction356(69),
- new ReduceAction153(69),
- new ReduceAction153(69),
- new ReduceAction359(69),
- new ReduceAction360(69),
- new ReduceAction361(69),
- new ReduceAction362(70),
- new ReduceAction362(70),
- new ReduceAction364(71),
+ new ReduceAction159(69),
+ new ReduceAction318(69),
+ new ReduceAction159(70),
+ new ReduceAction320(70),
+ new ReduceAction321(70),
+ new ReduceAction322(70),
+ new ReduceAction323(70),
+ new ReduceAction159(71),
+ new ReduceAction325(71),
+ new ReduceAction326(71),
+ new ReduceAction327(71),
+ new ReduceAction328(71),
+ new ReduceAction159(72),
+ new ReduceAction330(72),
+ new ReduceAction331(72),
+ new ReduceAction183(72),
+ new ReduceAction333(72),
+ new ReduceAction184(72),
+ new ReduceAction335(72),
+ new ReduceAction185(72),
+ new ReduceAction337(72),
+ new ReduceAction184(72),
+ new ReduceAction335(72),
+ new ReduceAction187(72),
+ new ReduceAction341(72),
+ new ReduceAction188(72),
+ new ReduceAction343(72),
+ new ReduceAction189(72),
+ new ReduceAction345(72),
+ new ReduceAction188(72),
+ new ReduceAction343(72),
+ new ReduceAction191(72),
+ new ReduceAction349(72),
+ new ReduceAction192(72),
+ new ReduceAction351(72),
+ new ReduceAction193(72),
+ new ReduceAction353(72),
+ new ReduceAction354(72),
+ new ReduceAction355(72),
+ new ReduceAction356(72),
+ new ReduceAction357(72),
+ new ReduceAction358(72),
+ new ReduceAction359(72),
+ new ReduceAction360(72),
+ new ReduceAction357(72),
+ new ReduceAction358(72),
+ new ReduceAction363(72),
+ new ReduceAction364(72),
new ReduceAction365(72),
- new ReduceAction366(73),
+ new ReduceAction159(73),
new ReduceAction367(73),
- new ReduceAction365(74),
- new ReduceAction369(75),
- new ReduceAction261(75),
- new ReduceAction371(75),
- new ReduceAction372(76),
- new ReduceAction373(76),
- new ReduceAction374(77),
- new ReduceAction375(77),
- new ReduceAction376(78),
- new ReduceAction374(79),
- new ReduceAction375(79),
- new ReduceAction379(80),
- new ReduceAction380(81),
- new ReduceAction381(82),
- new ReduceAction382(82),
- new ReduceAction383(83),
- new ReduceAction22(83),
- new ReduceAction385(84),
- new ReduceAction386(84),
- new ReduceAction387(85),
- new ReduceAction388(86),
- new ReduceAction389(86),
- new ReduceAction385(87),
- new ReduceAction386(87),
- new ReduceAction392(87),
- new ReduceAction153(88),
- new ReduceAction394(89),
- new ReduceAction387(90),
- new ReduceAction396(91),
- new ReduceAction397(91),
- new ReduceAction398(91),
- new ReduceAction399(91),
- new ReduceAction400(91),
- new ReduceAction401(92),
- new ReduceAction402(92),
- new ReduceAction403(92),
- new ReduceAction404(92),
- new ReduceAction405(92),
- new ReduceAction366(93),
- new ReduceAction367(93),
- new ReduceAction365(94),
- new ReduceAction409(95),
- new ReduceAction153(95),
- new ReduceAction153(95),
- new ReduceAction412(95),
- new ReduceAction413(95),
- new ReduceAction414(95),
- new ReduceAction415(96),
- new ReduceAction416(96),
- new ReduceAction417(96),
- new ReduceAction418(97),
- new ReduceAction419(97),
- new ReduceAction418(98),
- new ReduceAction421(98),
- new ReduceAction419(98),
- new ReduceAction423(98),
- new ReduceAction424(99),
- new ReduceAction425(100),
- new ReduceAction375(101),
- new ReduceAction427(101),
- new ReduceAction428(102),
- new ReduceAction429(103),
- new ReduceAction430(103),
- new ReduceAction431(104),
- new ReduceAction432(104),
- new ReduceAction433(105),
- new ReduceAction434(105),
- new ReduceAction435(105),
- new ReduceAction436(105),
- new ReduceAction437(106),
- new ReduceAction438(106),
- new ReduceAction439(106),
- new ReduceAction22(106),
- new ReduceAction441(107),
- new ReduceAction442(107),
- new ReduceAction443(107),
- new ReduceAction442(107),
- new ReduceAction445(108),
- new ReduceAction446(108),
- new ReduceAction447(108),
- new ReduceAction446(108),
- new ReduceAction449(109),
- new ReduceAction450(110),
- new ReduceAction22(111),
- new ReduceAction452(111),
- new ReduceAction453(112),
- new ReduceAction453(112),
- new ReduceAction455(113),
- new ReduceAction456(113),
- new ReduceAction23(113),
- new ReduceAction22(114),
- new ReduceAction459(114),
- new ReduceAction460(115),
- new ReduceAction461(115),
- new ReduceAction453(115),
- new ReduceAction46(116),
- new ReduceAction47(116),
- new ReduceAction48(116),
- new ReduceAction55(116),
- new ReduceAction56(116),
- new ReduceAction74(117),
- new ReduceAction75(117),
- new ReduceAction84(118),
- new ReduceAction85(118),
- new ReduceAction86(118),
- new ReduceAction87(118),
- new ReduceAction88(118),
- new ReduceAction89(118),
- new ReduceAction90(118),
- new ReduceAction91(118),
- new ReduceAction92(118),
- new ReduceAction93(118),
- new ReduceAction94(118),
- new ReduceAction95(118),
- new ReduceAction96(118),
- new ReduceAction97(118),
- new ReduceAction98(118),
- new ReduceAction99(118),
- new ReduceAction100(118),
- new ReduceAction101(118),
- new ReduceAction445(119),
- new ReduceAction446(119),
- new ReduceAction447(119),
- new ReduceAction446(119),
- new ReduceAction140(120),
- new ReduceAction141(120),
- new ReduceAction153(121),
- new ReduceAction273(121),
- new ReduceAction153(122),
- new ReduceAction275(122),
- new ReduceAction276(122),
- new ReduceAction277(122),
- new ReduceAction278(122),
- new ReduceAction153(123),
- new ReduceAction280(123),
- new ReduceAction153(124),
- new ReduceAction282(124),
- new ReduceAction283(124),
+ new ReduceAction368(73),
+ new ReduceAction369(74),
+ new ReduceAction370(74),
+ new ReduceAction371(74),
+ new ReduceAction372(74),
+ new ReduceAction373(74),
+ new ReduceAction374(74),
+ new ReduceAction375(74),
+ new ReduceAction376(74),
+ new ReduceAction377(74),
+ new ReduceAction159(74),
+ new ReduceAction159(74),
+ new ReduceAction380(74),
+ new ReduceAction381(74),
+ new ReduceAction382(74),
+ new ReduceAction383(75),
+ new ReduceAction383(75),
+ new ReduceAction385(76),
+ new ReduceAction386(77),
+ new ReduceAction387(78),
+ new ReduceAction388(78),
+ new ReduceAction386(79),
+ new ReduceAction390(80),
+ new ReduceAction272(80),
+ new ReduceAction392(80),
+ new ReduceAction393(81),
+ new ReduceAction394(81),
+ new ReduceAction395(82),
+ new ReduceAction396(82),
+ new ReduceAction397(83),
+ new ReduceAction395(84),
+ new ReduceAction396(84),
+ new ReduceAction400(85),
+ new ReduceAction401(86),
+ new ReduceAction402(87),
+ new ReduceAction403(87),
+ new ReduceAction404(88),
+ new ReduceAction22(88),
+ new ReduceAction406(89),
+ new ReduceAction407(89),
+ new ReduceAction408(90),
+ new ReduceAction409(90),
+ new ReduceAction406(91),
+ new ReduceAction407(91),
+ new ReduceAction412(91),
+ new ReduceAction159(92),
+ new ReduceAction414(93),
+ new ReduceAction415(94),
+ new ReduceAction416(94),
+ new ReduceAction417(94),
+ new ReduceAction418(94),
+ new ReduceAction419(94),
+ new ReduceAction420(95),
+ new ReduceAction421(95),
+ new ReduceAction422(95),
+ new ReduceAction423(95),
+ new ReduceAction424(95),
+ new ReduceAction387(96),
+ new ReduceAction388(96),
+ new ReduceAction386(97),
+ new ReduceAction428(98),
+ new ReduceAction159(98),
+ new ReduceAction159(98),
+ new ReduceAction431(98),
+ new ReduceAction432(98),
+ new ReduceAction433(98),
+ new ReduceAction434(99),
+ new ReduceAction435(99),
+ new ReduceAction436(99),
+ new ReduceAction437(100),
+ new ReduceAction438(100),
+ new ReduceAction437(101),
+ new ReduceAction440(101),
+ new ReduceAction438(101),
+ new ReduceAction442(101),
+ new ReduceAction443(102),
+ new ReduceAction396(103),
+ new ReduceAction445(103),
+ new ReduceAction446(104),
+ new ReduceAction447(105),
+ new ReduceAction448(105),
+ new ReduceAction449(106),
+ new ReduceAction450(106),
+ new ReduceAction451(107),
+ new ReduceAction452(107),
+ new ReduceAction453(107),
+ new ReduceAction454(107),
+ new ReduceAction455(108),
+ new ReduceAction456(108),
+ new ReduceAction457(108),
+ new ReduceAction22(108),
+ new ReduceAction459(109),
+ new ReduceAction460(109),
+ new ReduceAction461(109),
+ new ReduceAction460(109),
+ new ReduceAction463(110),
+ new ReduceAction464(110),
+ new ReduceAction465(110),
+ new ReduceAction464(110),
+ new ReduceAction467(111),
+ new ReduceAction468(112),
+ new ReduceAction22(113),
+ new ReduceAction470(113),
+ new ReduceAction471(114),
+ new ReduceAction471(114),
+ new ReduceAction471(114),
+ new ReduceAction474(115),
+ new ReduceAction475(115),
+ new ReduceAction23(115),
+ new ReduceAction23(115),
+ new ReduceAction478(115),
+ new ReduceAction478(115),
+ new ReduceAction480(115),
+ new ReduceAction481(115),
+ new ReduceAction482(115),
+ new ReduceAction482(115),
+ new ReduceAction484(115),
+ new ReduceAction22(116),
+ new ReduceAction486(116),
+ new ReduceAction487(117),
+ new ReduceAction471(117),
+ new ReduceAction471(118),
+ new ReduceAction490(118),
+ new ReduceAction48(119),
+ new ReduceAction49(119),
+ new ReduceAction50(119),
+ new ReduceAction57(119),
+ new ReduceAction58(119),
+ new ReduceAction76(120),
+ new ReduceAction77(120),
+ new ReduceAction86(121),
+ new ReduceAction87(121),
+ new ReduceAction88(121),
+ new ReduceAction89(121),
+ new ReduceAction90(121),
+ new ReduceAction91(121),
+ new ReduceAction92(121),
+ new ReduceAction93(121),
+ new ReduceAction94(121),
+ new ReduceAction95(121),
+ new ReduceAction96(121),
+ new ReduceAction97(121),
+ new ReduceAction98(121),
+ new ReduceAction99(121),
+ new ReduceAction100(121),
+ new ReduceAction101(121),
+ new ReduceAction102(121),
+ new ReduceAction103(121),
+ new ReduceAction104(121),
+ new ReduceAction105(121),
+ new ReduceAction106(121),
+ new ReduceAction107(121),
+ new ReduceAction463(122),
+ new ReduceAction464(122),
+ new ReduceAction465(122),
+ new ReduceAction464(122),
+ new ReduceAction146(123),
+ new ReduceAction147(123),
+ new ReduceAction159(124),
new ReduceAction284(124),
- new ReduceAction285(124),
- new ReduceAction286(124),
- new ReduceAction287(124),
- new ReduceAction288(124),
- new ReduceAction289(124),
- new ReduceAction290(124),
- new ReduceAction291(124),
- new ReduceAction153(125),
- new ReduceAction293(125),
- new ReduceAction294(125),
- new ReduceAction153(126),
- new ReduceAction296(126),
- new ReduceAction297(126),
- new ReduceAction298(126),
- new ReduceAction153(127),
+ new ReduceAction159(125),
+ new ReduceAction286(125),
+ new ReduceAction287(125),
+ new ReduceAction288(125),
+ new ReduceAction289(125),
+ new ReduceAction159(126),
+ new ReduceAction291(126),
+ new ReduceAction159(127),
+ new ReduceAction293(127),
+ new ReduceAction294(127),
+ new ReduceAction295(127),
+ new ReduceAction296(127),
+ new ReduceAction297(127),
+ new ReduceAction298(127),
+ new ReduceAction299(127),
new ReduceAction300(127),
- new ReduceAction153(128),
+ new ReduceAction159(128),
new ReduceAction302(128),
- new ReduceAction303(128),
- new ReduceAction304(128),
- new ReduceAction153(129),
- new ReduceAction306(129),
- new ReduceAction307(129),
- new ReduceAction308(129),
- new ReduceAction309(129),
- new ReduceAction153(130),
- new ReduceAction311(130),
- new ReduceAction312(130),
- new ReduceAction177(130),
- new ReduceAction181(130),
- new ReduceAction314(130),
- new ReduceAction322(130),
- new ReduceAction178(130),
- new ReduceAction182(130),
- new ReduceAction316(130),
- new ReduceAction324(130),
- new ReduceAction179(130),
- new ReduceAction183(130),
- new ReduceAction318(130),
- new ReduceAction326(130),
- new ReduceAction178(130),
- new ReduceAction182(130),
- new ReduceAction316(130),
- new ReduceAction324(130),
- new ReduceAction185(130),
- new ReduceAction330(130),
- new ReduceAction186(130),
- new ReduceAction187(130),
- new ReduceAction332(130),
- new ReduceAction334(130),
- new ReduceAction336(130),
- new ReduceAction337(130),
- new ReduceAction338(130),
- new ReduceAction339(130),
- new ReduceAction340(130),
- new ReduceAction341(130),
- new ReduceAction338(130),
- new ReduceAction339(130),
- new ReduceAction344(130),
- new ReduceAction345(130),
- new ReduceAction346(130),
- new ReduceAction347(130),
- new ReduceAction348(131),
- new ReduceAction349(131),
- new ReduceAction350(131),
- new ReduceAction351(131),
- new ReduceAction352(131),
- new ReduceAction353(131),
- new ReduceAction354(131),
- new ReduceAction355(131),
- new ReduceAction356(131),
- new ReduceAction153(131),
- new ReduceAction153(131),
- new ReduceAction140(132),
- new ReduceAction141(132),
- new ReduceAction142(132),
- new ReduceAction143(132),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction163(133),
- new ReduceAction164(133),
- new ReduceAction165(133),
- new ReduceAction166(133),
- new ReduceAction167(133),
- new ReduceAction168(133),
- new ReduceAction169(133),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction153(133),
- new ReduceAction177(133),
- new ReduceAction178(133),
- new ReduceAction179(133),
- new ReduceAction178(133),
- new ReduceAction181(133),
- new ReduceAction182(133),
- new ReduceAction183(133),
- new ReduceAction182(133),
- new ReduceAction185(133),
- new ReduceAction186(133),
- new ReduceAction187(133),
- new ReduceAction188(133),
- new ReduceAction189(133),
- new ReduceAction188(133),
- new ReduceAction191(133),
- new ReduceAction192(133),
- new ReduceAction191(133),
- new ReduceAction194(133),
- new ReduceAction201(134),
- new ReduceAction202(134),
- new ReduceAction203(134),
- new ReduceAction204(134),
- new ReduceAction205(134),
- new ReduceAction206(134),
- new ReduceAction207(134),
- new ReduceAction208(134),
- new ReduceAction205(134),
- new ReduceAction206(134),
- new ReduceAction211(134),
- new ReduceAction212(134),
- new ReduceAction213(134),
- new ReduceAction214(134),
- new ReduceAction215(134),
- new ReduceAction216(134),
- new ReduceAction213(134),
- new ReduceAction214(134),
- new ReduceAction219(134),
- new ReduceAction220(134),
- new ReduceAction221(134),
- new ReduceAction222(134),
- new ReduceAction223(134),
- new ReduceAction224(134),
- new ReduceAction225(134),
- new ReduceAction226(134),
- new ReduceAction227(134),
- new ReduceAction224(134),
- new ReduceAction225(134),
- new ReduceAction230(134),
- new ReduceAction231(134),
- new ReduceAction232(134),
- new ReduceAction233(134),
- new ReduceAction234(134),
- new ReduceAction235(134),
- new ReduceAction232(134),
- new ReduceAction233(134),
- new ReduceAction238(134),
- new ReduceAction153(135),
- new ReduceAction273(135),
- new ReduceAction153(136),
- new ReduceAction275(136),
- new ReduceAction276(136),
- new ReduceAction277(136),
- new ReduceAction278(136),
- new ReduceAction153(137),
- new ReduceAction280(137),
- new ReduceAction153(138),
- new ReduceAction282(138),
- new ReduceAction283(138),
- new ReduceAction284(138),
- new ReduceAction285(138),
- new ReduceAction286(138),
- new ReduceAction287(138),
- new ReduceAction288(138),
- new ReduceAction289(138),
- new ReduceAction290(138),
- new ReduceAction291(138),
- new ReduceAction153(139),
- new ReduceAction293(139),
- new ReduceAction294(139),
- new ReduceAction153(140),
- new ReduceAction296(140),
- new ReduceAction297(140),
- new ReduceAction298(140),
- new ReduceAction153(141),
- new ReduceAction300(141),
- new ReduceAction153(142),
- new ReduceAction302(142),
- new ReduceAction303(142),
- new ReduceAction304(142),
- new ReduceAction153(143),
- new ReduceAction306(143),
- new ReduceAction307(143),
- new ReduceAction308(143),
- new ReduceAction309(143),
- new ReduceAction153(144),
- new ReduceAction311(144),
- new ReduceAction312(144),
- new ReduceAction177(144),
- new ReduceAction314(144),
- new ReduceAction178(144),
- new ReduceAction316(144),
- new ReduceAction179(144),
- new ReduceAction318(144),
- new ReduceAction178(144),
- new ReduceAction316(144),
- new ReduceAction181(144),
- new ReduceAction322(144),
- new ReduceAction182(144),
- new ReduceAction324(144),
- new ReduceAction183(144),
- new ReduceAction326(144),
- new ReduceAction182(144),
- new ReduceAction324(144),
- new ReduceAction185(144),
- new ReduceAction330(144),
- new ReduceAction186(144),
- new ReduceAction332(144),
- new ReduceAction187(144),
- new ReduceAction334(144),
- new ReduceAction335(144),
- new ReduceAction336(144),
- new ReduceAction337(144),
- new ReduceAction338(144),
- new ReduceAction339(144),
- new ReduceAction340(144),
- new ReduceAction341(144),
- new ReduceAction338(144),
- new ReduceAction339(144),
- new ReduceAction344(144),
- new ReduceAction345(144),
- new ReduceAction346(144),
- new ReduceAction347(144),
- new ReduceAction348(145),
- new ReduceAction349(145),
- new ReduceAction350(145),
- new ReduceAction351(145),
- new ReduceAction352(145),
- new ReduceAction353(145),
- new ReduceAction354(145),
- new ReduceAction355(145),
- new ReduceAction356(145),
- new ReduceAction153(145),
- new ReduceAction381(146),
- new ReduceAction382(146),
- new ReduceAction383(147),
- new ReduceAction22(147),
- new ReduceAction385(148),
- new ReduceAction385(149),
- new ReduceAction366(150),
- new ReduceAction367(150),
- new ReduceAction409(151),
- new ReduceAction153(151),
- new ReduceAction153(151),
- new ReduceAction412(151),
- new ReduceAction413(151),
- new ReduceAction140(152),
- new ReduceAction141(152),
- new ReduceAction153(153),
- new ReduceAction273(153),
- new ReduceAction153(154),
- new ReduceAction275(154),
- new ReduceAction276(154),
- new ReduceAction277(154),
- new ReduceAction278(154),
- new ReduceAction153(155),
- new ReduceAction280(155),
- new ReduceAction153(156),
- new ReduceAction282(156),
- new ReduceAction283(156),
- new ReduceAction284(156),
- new ReduceAction285(156),
- new ReduceAction286(156),
- new ReduceAction287(156),
- new ReduceAction288(156),
- new ReduceAction289(156),
- new ReduceAction290(156),
- new ReduceAction291(156),
- new ReduceAction153(157),
- new ReduceAction293(157),
- new ReduceAction294(157),
- new ReduceAction153(158),
- new ReduceAction296(158),
- new ReduceAction297(158),
- new ReduceAction298(158),
- new ReduceAction153(159),
- new ReduceAction300(159),
- new ReduceAction153(160),
- new ReduceAction302(160),
- new ReduceAction303(160),
- new ReduceAction304(160),
- new ReduceAction153(161),
- new ReduceAction306(161),
- new ReduceAction307(161),
- new ReduceAction793(161),
- new ReduceAction153(162),
- new ReduceAction795(162),
- new ReduceAction796(162),
- new ReduceAction797(162),
- new ReduceAction798(162),
- new ReduceAction799(162),
- new ReduceAction177(162),
- new ReduceAction314(162),
- new ReduceAction798(162),
- new ReduceAction799(162),
- new ReduceAction185(162),
- new ReduceAction330(162),
- new ReduceAction806(162),
- new ReduceAction807(162),
- new ReduceAction336(162),
- new ReduceAction337(162),
- new ReduceAction338(162),
- new ReduceAction339(162),
- new ReduceAction340(162),
- new ReduceAction341(162),
- new ReduceAction338(162),
- new ReduceAction339(162),
- new ReduceAction344(162),
- new ReduceAction345(162),
- new ReduceAction346(162),
- new ReduceAction347(162),
- new ReduceAction348(163),
- new ReduceAction349(163),
- new ReduceAction350(163),
- new ReduceAction351(163),
- new ReduceAction352(163),
- new ReduceAction353(163),
- new ReduceAction354(163),
- new ReduceAction355(163),
- new ReduceAction356(163),
- new ReduceAction153(163),
- new ReduceAction830(164),
- new ReduceAction831(164),
- new ReduceAction150(165),
- new ReduceAction151(165),
- new ReduceAction152(165),
- new ReduceAction153(165),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction163(166),
- new ReduceAction164(166),
- new ReduceAction165(166),
- new ReduceAction166(166),
- new ReduceAction167(166),
- new ReduceAction168(166),
- new ReduceAction169(166),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction153(166),
- new ReduceAction177(166),
- new ReduceAction178(166),
- new ReduceAction179(166),
- new ReduceAction178(166),
- new ReduceAction181(166),
- new ReduceAction182(166),
- new ReduceAction183(166),
- new ReduceAction182(166),
- new ReduceAction185(166),
- new ReduceAction186(166),
- new ReduceAction187(166),
- new ReduceAction188(166),
- new ReduceAction189(166),
- new ReduceAction188(166),
- new ReduceAction191(166),
- new ReduceAction192(166),
- new ReduceAction191(166),
- new ReduceAction194(166),
- new ReduceAction247(167),
- new ReduceAction248(167),
- new ReduceAction249(168),
- new ReduceAction256(169),
- new ReduceAction257(169),
- new ReduceAction258(170),
- new ReduceAction259(170),
- new ReduceAction260(171),
- new ReduceAction261(171),
- new ReduceAction262(172),
- new ReduceAction263(172),
- new ReduceAction267(173),
- new ReduceAction268(173),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction163(174),
- new ReduceAction164(174),
- new ReduceAction165(174),
- new ReduceAction166(174),
- new ReduceAction167(174),
- new ReduceAction168(174),
- new ReduceAction169(174),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction153(174),
- new ReduceAction177(174),
- new ReduceAction178(174),
- new ReduceAction179(174),
- new ReduceAction178(174),
- new ReduceAction181(174),
- new ReduceAction182(174),
- new ReduceAction183(174),
- new ReduceAction182(174),
- new ReduceAction185(174),
- new ReduceAction186(174),
- new ReduceAction187(174),
- new ReduceAction188(174),
- new ReduceAction189(174),
- new ReduceAction188(174),
- new ReduceAction191(174),
- new ReduceAction192(174),
- new ReduceAction191(174),
- new ReduceAction194(174),
- new ReduceAction150(175),
- new ReduceAction151(175),
- new ReduceAction152(175),
- new ReduceAction150(176),
- new ReduceAction151(176),
- new ReduceAction152(176),
- new ReduceAction153(177),
- new ReduceAction153(177),
- new ReduceAction163(177),
- new ReduceAction164(177),
- new ReduceAction165(177),
- new ReduceAction166(177),
- new ReduceAction167(177),
- new ReduceAction168(177),
- new ReduceAction169(177),
- new ReduceAction153(177),
- new ReduceAction153(177),
- new ReduceAction153(177),
- new ReduceAction153(177),
- new ReduceAction153(177),
- new ReduceAction153(177),
- new ReduceAction194(177),
- new ReduceAction153(178),
- new ReduceAction153(178),
- new ReduceAction163(178),
- new ReduceAction164(178),
- new ReduceAction165(178),
- new ReduceAction166(178),
- new ReduceAction167(178),
- new ReduceAction168(178),
- new ReduceAction169(178),
- new ReduceAction153(178),
- new ReduceAction153(178),
- new ReduceAction153(178),
- new ReduceAction153(178),
- new ReduceAction153(178),
- new ReduceAction153(178),
- new ReduceAction194(178),
- new ReduceAction153(179),
- new ReduceAction153(179),
- new ReduceAction163(179),
- new ReduceAction164(179),
- new ReduceAction165(179),
- new ReduceAction166(179),
- new ReduceAction167(179),
- new ReduceAction168(179),
- new ReduceAction169(179),
- new ReduceAction153(179),
- new ReduceAction153(179),
- new ReduceAction153(179),
- new ReduceAction153(179),
- new ReduceAction153(179),
- new ReduceAction153(179),
- new ReduceAction194(179),
- new ReduceAction153(180),
- new ReduceAction153(180),
- new ReduceAction163(180),
- new ReduceAction164(180),
- new ReduceAction165(180),
- new ReduceAction166(180),
- new ReduceAction167(180),
- new ReduceAction168(180),
- new ReduceAction169(180),
- new ReduceAction153(180),
- new ReduceAction153(180),
- new ReduceAction153(180),
- new ReduceAction153(180),
- new ReduceAction153(180),
- new ReduceAction153(180),
- new ReduceAction194(180),
- new ReduceAction415(181),
- new ReduceAction417(181),
- new ReduceAction989(182),
- new ReduceAction990(182),
- new ReduceAction991(183),
- new ReduceAction992(183),
- new ReduceAction993(184),
- new ReduceAction994(184),
- new ReduceAction995(185),
- new ReduceAction996(185),
- new ReduceAction43(186),
- new ReduceAction998(186),
- new ReduceAction999(187),
- new ReduceAction1000(187),
- new ReduceAction1001(188),
- new ReduceAction1002(188),
- new ReduceAction144(189),
- new ReduceAction1004(189),
- new ReduceAction366(190),
- new ReduceAction1006(190),
- new ReduceAction366(191),
- new ReduceAction1006(191),
- new ReduceAction366(192),
- new ReduceAction1006(192),
- new ReduceAction430(193),
- new ReduceAction1012(193),
- new ReduceAction388(194),
- new ReduceAction1014(194),
- new ReduceAction388(195),
- new ReduceAction1014(195),
- new ReduceAction366(196),
- new ReduceAction1006(196),
- new ReduceAction366(197),
- new ReduceAction1006(197),
- new ReduceAction431(198),
- new ReduceAction1022(198),
- new ReduceAction1023(199),
- new ReduceAction1024(199),
- new ReduceAction1025(200),
- new ReduceAction1026(200)
+ new ReduceAction159(129),
+ new ReduceAction304(129),
+ new ReduceAction159(130),
+ new ReduceAction306(130),
+ new ReduceAction159(131),
+ new ReduceAction308(131),
+ new ReduceAction309(131),
+ new ReduceAction159(132),
+ new ReduceAction311(132),
+ new ReduceAction312(132),
+ new ReduceAction159(133),
+ new ReduceAction314(133),
+ new ReduceAction315(133),
+ new ReduceAction316(133),
+ new ReduceAction159(134),
+ new ReduceAction318(134),
+ new ReduceAction159(135),
+ new ReduceAction320(135),
+ new ReduceAction321(135),
+ new ReduceAction322(135),
+ new ReduceAction323(135),
+ new ReduceAction159(136),
+ new ReduceAction325(136),
+ new ReduceAction326(136),
+ new ReduceAction327(136),
+ new ReduceAction328(136),
+ new ReduceAction159(137),
+ new ReduceAction330(137),
+ new ReduceAction331(137),
+ new ReduceAction183(137),
+ new ReduceAction187(137),
+ new ReduceAction333(137),
+ new ReduceAction341(137),
+ new ReduceAction184(137),
+ new ReduceAction188(137),
+ new ReduceAction335(137),
+ new ReduceAction343(137),
+ new ReduceAction185(137),
+ new ReduceAction189(137),
+ new ReduceAction337(137),
+ new ReduceAction345(137),
+ new ReduceAction184(137),
+ new ReduceAction188(137),
+ new ReduceAction335(137),
+ new ReduceAction343(137),
+ new ReduceAction191(137),
+ new ReduceAction349(137),
+ new ReduceAction192(137),
+ new ReduceAction193(137),
+ new ReduceAction351(137),
+ new ReduceAction353(137),
+ new ReduceAction355(137),
+ new ReduceAction356(137),
+ new ReduceAction357(137),
+ new ReduceAction358(137),
+ new ReduceAction359(137),
+ new ReduceAction360(137),
+ new ReduceAction357(137),
+ new ReduceAction358(137),
+ new ReduceAction363(137),
+ new ReduceAction364(137),
+ new ReduceAction365(137),
+ new ReduceAction159(138),
+ new ReduceAction367(138),
+ new ReduceAction368(138),
+ new ReduceAction369(139),
+ new ReduceAction370(139),
+ new ReduceAction371(139),
+ new ReduceAction372(139),
+ new ReduceAction373(139),
+ new ReduceAction374(139),
+ new ReduceAction375(139),
+ new ReduceAction376(139),
+ new ReduceAction377(139),
+ new ReduceAction159(139),
+ new ReduceAction159(139),
+ new ReduceAction146(140),
+ new ReduceAction147(140),
+ new ReduceAction148(140),
+ new ReduceAction149(140),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction169(141),
+ new ReduceAction170(141),
+ new ReduceAction171(141),
+ new ReduceAction172(141),
+ new ReduceAction173(141),
+ new ReduceAction174(141),
+ new ReduceAction175(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction159(141),
+ new ReduceAction183(141),
+ new ReduceAction184(141),
+ new ReduceAction185(141),
+ new ReduceAction184(141),
+ new ReduceAction187(141),
+ new ReduceAction188(141),
+ new ReduceAction189(141),
+ new ReduceAction188(141),
+ new ReduceAction191(141),
+ new ReduceAction192(141),
+ new ReduceAction193(141),
+ new ReduceAction194(141),
+ new ReduceAction195(141),
+ new ReduceAction194(141),
+ new ReduceAction197(141),
+ new ReduceAction198(141),
+ new ReduceAction197(141),
+ new ReduceAction200(141),
+ new ReduceAction207(142),
+ new ReduceAction208(142),
+ new ReduceAction209(142),
+ new ReduceAction210(142),
+ new ReduceAction211(142),
+ new ReduceAction212(142),
+ new ReduceAction213(142),
+ new ReduceAction214(142),
+ new ReduceAction211(142),
+ new ReduceAction212(142),
+ new ReduceAction217(142),
+ new ReduceAction218(142),
+ new ReduceAction219(142),
+ new ReduceAction220(142),
+ new ReduceAction221(142),
+ new ReduceAction222(142),
+ new ReduceAction219(142),
+ new ReduceAction220(142),
+ new ReduceAction225(142),
+ new ReduceAction226(142),
+ new ReduceAction227(142),
+ new ReduceAction228(142),
+ new ReduceAction229(142),
+ new ReduceAction230(142),
+ new ReduceAction231(142),
+ new ReduceAction232(142),
+ new ReduceAction233(142),
+ new ReduceAction230(142),
+ new ReduceAction231(142),
+ new ReduceAction236(142),
+ new ReduceAction237(142),
+ new ReduceAction238(142),
+ new ReduceAction239(142),
+ new ReduceAction240(142),
+ new ReduceAction241(142),
+ new ReduceAction238(142),
+ new ReduceAction239(142),
+ new ReduceAction244(142),
+ new ReduceAction159(143),
+ new ReduceAction284(143),
+ new ReduceAction159(144),
+ new ReduceAction286(144),
+ new ReduceAction287(144),
+ new ReduceAction288(144),
+ new ReduceAction289(144),
+ new ReduceAction159(145),
+ new ReduceAction291(145),
+ new ReduceAction159(146),
+ new ReduceAction293(146),
+ new ReduceAction294(146),
+ new ReduceAction295(146),
+ new ReduceAction296(146),
+ new ReduceAction297(146),
+ new ReduceAction298(146),
+ new ReduceAction299(146),
+ new ReduceAction300(146),
+ new ReduceAction159(147),
+ new ReduceAction302(147),
+ new ReduceAction159(148),
+ new ReduceAction304(148),
+ new ReduceAction159(149),
+ new ReduceAction306(149),
+ new ReduceAction159(150),
+ new ReduceAction308(150),
+ new ReduceAction309(150),
+ new ReduceAction159(151),
+ new ReduceAction311(151),
+ new ReduceAction312(151),
+ new ReduceAction159(152),
+ new ReduceAction314(152),
+ new ReduceAction315(152),
+ new ReduceAction316(152),
+ new ReduceAction159(153),
+ new ReduceAction318(153),
+ new ReduceAction159(154),
+ new ReduceAction320(154),
+ new ReduceAction321(154),
+ new ReduceAction322(154),
+ new ReduceAction323(154),
+ new ReduceAction159(155),
+ new ReduceAction325(155),
+ new ReduceAction326(155),
+ new ReduceAction327(155),
+ new ReduceAction328(155),
+ new ReduceAction159(156),
+ new ReduceAction330(156),
+ new ReduceAction331(156),
+ new ReduceAction183(156),
+ new ReduceAction333(156),
+ new ReduceAction184(156),
+ new ReduceAction335(156),
+ new ReduceAction185(156),
+ new ReduceAction337(156),
+ new ReduceAction184(156),
+ new ReduceAction335(156),
+ new ReduceAction187(156),
+ new ReduceAction341(156),
+ new ReduceAction188(156),
+ new ReduceAction343(156),
+ new ReduceAction189(156),
+ new ReduceAction345(156),
+ new ReduceAction188(156),
+ new ReduceAction343(156),
+ new ReduceAction191(156),
+ new ReduceAction349(156),
+ new ReduceAction192(156),
+ new ReduceAction351(156),
+ new ReduceAction193(156),
+ new ReduceAction353(156),
+ new ReduceAction354(156),
+ new ReduceAction355(156),
+ new ReduceAction356(156),
+ new ReduceAction357(156),
+ new ReduceAction358(156),
+ new ReduceAction359(156),
+ new ReduceAction360(156),
+ new ReduceAction357(156),
+ new ReduceAction358(156),
+ new ReduceAction363(156),
+ new ReduceAction364(156),
+ new ReduceAction365(156),
+ new ReduceAction159(157),
+ new ReduceAction367(157),
+ new ReduceAction368(157),
+ new ReduceAction369(158),
+ new ReduceAction370(158),
+ new ReduceAction371(158),
+ new ReduceAction372(158),
+ new ReduceAction373(158),
+ new ReduceAction374(158),
+ new ReduceAction375(158),
+ new ReduceAction376(158),
+ new ReduceAction377(158),
+ new ReduceAction159(158),
+ new ReduceAction402(159),
+ new ReduceAction403(159),
+ new ReduceAction404(160),
+ new ReduceAction22(160),
+ new ReduceAction406(161),
+ new ReduceAction406(162),
+ new ReduceAction387(163),
+ new ReduceAction388(163),
+ new ReduceAction428(164),
+ new ReduceAction159(164),
+ new ReduceAction159(164),
+ new ReduceAction431(164),
+ new ReduceAction432(164),
+ new ReduceAction146(165),
+ new ReduceAction147(165),
+ new ReduceAction159(166),
+ new ReduceAction284(166),
+ new ReduceAction159(167),
+ new ReduceAction286(167),
+ new ReduceAction287(167),
+ new ReduceAction288(167),
+ new ReduceAction289(167),
+ new ReduceAction159(168),
+ new ReduceAction291(168),
+ new ReduceAction159(169),
+ new ReduceAction293(169),
+ new ReduceAction294(169),
+ new ReduceAction295(169),
+ new ReduceAction296(169),
+ new ReduceAction297(169),
+ new ReduceAction298(169),
+ new ReduceAction299(169),
+ new ReduceAction300(169),
+ new ReduceAction159(170),
+ new ReduceAction302(170),
+ new ReduceAction159(171),
+ new ReduceAction304(171),
+ new ReduceAction159(172),
+ new ReduceAction306(172),
+ new ReduceAction159(173),
+ new ReduceAction308(173),
+ new ReduceAction309(173),
+ new ReduceAction159(174),
+ new ReduceAction311(174),
+ new ReduceAction312(174),
+ new ReduceAction159(175),
+ new ReduceAction314(175),
+ new ReduceAction315(175),
+ new ReduceAction316(175),
+ new ReduceAction159(176),
+ new ReduceAction318(176),
+ new ReduceAction159(177),
+ new ReduceAction320(177),
+ new ReduceAction321(177),
+ new ReduceAction322(177),
+ new ReduceAction323(177),
+ new ReduceAction159(178),
+ new ReduceAction325(178),
+ new ReduceAction326(178),
+ new ReduceAction853(178),
+ new ReduceAction159(179),
+ new ReduceAction855(179),
+ new ReduceAction856(179),
+ new ReduceAction857(179),
+ new ReduceAction858(179),
+ new ReduceAction859(179),
+ new ReduceAction183(179),
+ new ReduceAction333(179),
+ new ReduceAction858(179),
+ new ReduceAction859(179),
+ new ReduceAction191(179),
+ new ReduceAction349(179),
+ new ReduceAction866(179),
+ new ReduceAction867(179),
+ new ReduceAction355(179),
+ new ReduceAction356(179),
+ new ReduceAction357(179),
+ new ReduceAction358(179),
+ new ReduceAction359(179),
+ new ReduceAction360(179),
+ new ReduceAction357(179),
+ new ReduceAction358(179),
+ new ReduceAction363(179),
+ new ReduceAction364(179),
+ new ReduceAction365(179),
+ new ReduceAction159(180),
+ new ReduceAction367(180),
+ new ReduceAction368(180),
+ new ReduceAction369(181),
+ new ReduceAction370(181),
+ new ReduceAction371(181),
+ new ReduceAction372(181),
+ new ReduceAction373(181),
+ new ReduceAction374(181),
+ new ReduceAction375(181),
+ new ReduceAction376(181),
+ new ReduceAction377(181),
+ new ReduceAction159(181),
+ new ReduceAction892(182),
+ new ReduceAction893(182),
+ new ReduceAction156(183),
+ new ReduceAction157(183),
+ new ReduceAction158(183),
+ new ReduceAction159(183),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction169(184),
+ new ReduceAction170(184),
+ new ReduceAction171(184),
+ new ReduceAction172(184),
+ new ReduceAction173(184),
+ new ReduceAction174(184),
+ new ReduceAction175(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction159(184),
+ new ReduceAction183(184),
+ new ReduceAction184(184),
+ new ReduceAction185(184),
+ new ReduceAction184(184),
+ new ReduceAction187(184),
+ new ReduceAction188(184),
+ new ReduceAction189(184),
+ new ReduceAction188(184),
+ new ReduceAction191(184),
+ new ReduceAction192(184),
+ new ReduceAction193(184),
+ new ReduceAction194(184),
+ new ReduceAction195(184),
+ new ReduceAction194(184),
+ new ReduceAction197(184),
+ new ReduceAction198(184),
+ new ReduceAction197(184),
+ new ReduceAction200(184),
+ new ReduceAction256(185),
+ new ReduceAction257(185),
+ new ReduceAction258(186),
+ new ReduceAction267(187),
+ new ReduceAction268(187),
+ new ReduceAction269(188),
+ new ReduceAction270(188),
+ new ReduceAction271(189),
+ new ReduceAction272(189),
+ new ReduceAction273(190),
+ new ReduceAction274(190),
+ new ReduceAction278(191),
+ new ReduceAction279(191),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction169(192),
+ new ReduceAction170(192),
+ new ReduceAction171(192),
+ new ReduceAction172(192),
+ new ReduceAction173(192),
+ new ReduceAction174(192),
+ new ReduceAction175(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction159(192),
+ new ReduceAction183(192),
+ new ReduceAction184(192),
+ new ReduceAction185(192),
+ new ReduceAction184(192),
+ new ReduceAction187(192),
+ new ReduceAction188(192),
+ new ReduceAction189(192),
+ new ReduceAction188(192),
+ new ReduceAction191(192),
+ new ReduceAction192(192),
+ new ReduceAction193(192),
+ new ReduceAction194(192),
+ new ReduceAction195(192),
+ new ReduceAction194(192),
+ new ReduceAction197(192),
+ new ReduceAction198(192),
+ new ReduceAction197(192),
+ new ReduceAction200(192),
+ new ReduceAction156(193),
+ new ReduceAction157(193),
+ new ReduceAction158(193),
+ new ReduceAction156(194),
+ new ReduceAction157(194),
+ new ReduceAction158(194),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction169(195),
+ new ReduceAction170(195),
+ new ReduceAction171(195),
+ new ReduceAction172(195),
+ new ReduceAction173(195),
+ new ReduceAction174(195),
+ new ReduceAction175(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction159(195),
+ new ReduceAction200(195),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction169(196),
+ new ReduceAction170(196),
+ new ReduceAction171(196),
+ new ReduceAction172(196),
+ new ReduceAction173(196),
+ new ReduceAction174(196),
+ new ReduceAction175(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction159(196),
+ new ReduceAction200(196),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction169(197),
+ new ReduceAction170(197),
+ new ReduceAction171(197),
+ new ReduceAction172(197),
+ new ReduceAction173(197),
+ new ReduceAction174(197),
+ new ReduceAction175(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction159(197),
+ new ReduceAction200(197),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction169(198),
+ new ReduceAction170(198),
+ new ReduceAction171(198),
+ new ReduceAction172(198),
+ new ReduceAction173(198),
+ new ReduceAction174(198),
+ new ReduceAction175(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction159(198),
+ new ReduceAction200(198),
+ new ReduceAction434(199),
+ new ReduceAction436(199),
+ new ReduceAction474(200),
+ new ReduceAction475(200),
+ new ReduceAction23(200),
+ new ReduceAction1054(201),
+ new ReduceAction1055(201),
+ new ReduceAction1056(202),
+ new ReduceAction1057(202),
+ new ReduceAction1058(203),
+ new ReduceAction1059(203),
+ new ReduceAction37(204),
+ new ReduceAction1061(204),
+ new ReduceAction45(205),
+ new ReduceAction1063(205),
+ new ReduceAction408(206),
+ new ReduceAction1065(206),
+ new ReduceAction1066(207),
+ new ReduceAction1067(207),
+ new ReduceAction1068(208),
+ new ReduceAction1069(208),
+ new ReduceAction150(209),
+ new ReduceAction1071(209),
+ new ReduceAction387(210),
+ new ReduceAction1073(210),
+ new ReduceAction387(211),
+ new ReduceAction1073(211),
+ new ReduceAction387(212),
+ new ReduceAction1073(212),
+ new ReduceAction448(213),
+ new ReduceAction1079(213),
+ new ReduceAction408(214),
+ new ReduceAction1065(214),
+ new ReduceAction387(215),
+ new ReduceAction1073(215),
+ new ReduceAction387(216),
+ new ReduceAction1073(216),
+ new ReduceAction449(217),
+ new ReduceAction1087(217),
+ new ReduceAction1088(218),
+ new ReduceAction1089(218),
+ new ReduceAction471(219),
+ new ReduceAction490(219)
)
end
end
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 nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var listnode7 = nodearraylist7
- assert listnode7 isa Array[Object]
- listnode8 = concat(listnode8, listnode7)
- var listnode10 = nodearraylist8
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist9
- assert tkwendnode12 isa nullable TKwend
+ 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(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
pclasskindnode5,
tclassidnode6,
+ null,
listnode8,
null,
- listnode11,
- tkwendnode12
+ null,
+ listnode12,
+ tkwendnode13
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
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 nodearraylist2 = p.pop
var nodearraylist1 = p.pop
var listnode8 = new Array[Object]
- var listnode11 = new Array[Object]
+ var listnode12 = new Array[Object]
var pdocnode2 = nodearraylist1
assert pdocnode2 isa nullable ADoc
var tkwredefnode3 = nodearraylist2
assert pclasskindnode5 isa nullable AClasskind
var tclassidnode6 = nodearraylist6
assert tclassidnode6 isa nullable TClassid
- var listnode7 = nodearraylist7
- assert listnode7 isa Array[Object]
- listnode8 = concat(listnode8, listnode7)
- var pexterncodeblocknode9 = nodearraylist8
- assert pexterncodeblocknode9 isa nullable AExternCodeBlock
- var listnode10 = nodearraylist9
- assert listnode10 isa Array[Object]
- listnode11 = concat(listnode11, listnode10)
- var tkwendnode12 = nodearraylist10
- assert tkwendnode12 isa nullable TKwend
+ 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(
pdocnode2,
tkwredefnode3,
pvisibilitynode4,
pclasskindnode5,
tclassidnode6,
+ null,
listnode8,
- pexterncodeblocknode9,
- listnode11,
- tkwendnode12
+ null,
+ pexterncodeblocknode10,
+ listnode12,
+ tkwendnode13
+ )
+ node_list = pclassdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction28
+ 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 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 tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ 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(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ tobranode7,
+ listnode9,
+ tcbranode10,
+ null,
+ listnode13,
+ tkwendnode14
)
node_list = pclassdefnode1
p.push(p.go_to(_goto), node_list)
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 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 tclassidnode6 = nodearraylist6
+ assert tclassidnode6 isa nullable TClassid
+ 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(
+ pdocnode2,
+ tkwredefnode3,
+ pvisibilitynode4,
+ pclasskindnode5,
+ tclassidnode6,
+ tobranode7,
+ listnode9,
+ tcbranode10,
+ pexterncodeblocknode11,
+ listnode13,
+ tkwendnode14
+ )
+ node_list = pclassdefnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction31
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
var nodearraylist1 = p.pop
var tkwredefnode1 = nodearraylist1
node_list = tkwredefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction30
+private class ReduceAction32
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction31
+private class ReduceAction33
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction32
+private class ReduceAction34
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction33
+private class ReduceAction35
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction34
+private class ReduceAction36
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction35
+private class ReduceAction37
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 listnode2 = new Array[Object]
- var pformaldefnode1 = nodearraylist3
+ var pformaldefnode1 = nodearraylist1
if pformaldefnode1 != null then
listnode2.add(pformaldefnode1)
end
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction36
+private class ReduceAction38
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 pformaldefnode1 = nodearraylist3
- var listnode2 = nodearraylist4
+ var pformaldefnode1 = nodearraylist1
+ var listnode2 = nodearraylist2
assert listnode2 isa Array[Object]
if pformaldefnode1 != null then
listnode3.add(pformaldefnode1)
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction37
+private class ReduceAction39
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction38
+private class ReduceAction40
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction39
+private class ReduceAction41
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 tclassidnode2 = nodearraylist1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction40
+private class ReduceAction42
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
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction41
+private class ReduceAction43
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction42
+private class ReduceAction44
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction43
+private class ReduceAction45
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction44
+private class ReduceAction46
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction45
+private class ReduceAction47
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction46
+private class ReduceAction48
super ReduceAction
redef fun action(p: Parser)
do
assert pmethidnode8 isa nullable AMethid
var psignaturenode9 = nodearraylist6
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction47
+private class ReduceAction49
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist7
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist9
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist8
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist9
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction48
+private class ReduceAction50
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
null,
null,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction49
+private class ReduceAction51
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
null,
null,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction50
+private class ReduceAction52
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
null,
null,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction51
+private class ReduceAction53
super ReduceAction
redef fun action(p: Parser)
do
assert tkwnewnode7 isa nullable TKwnew
var psignaturenode9 = nodearraylist5
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist7
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist6
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist7
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist8
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction52
+private class ReduceAction54
super ReduceAction
redef fun action(p: Parser)
do
assert pmethidnode8 isa nullable AMethid
var psignaturenode9 = nodearraylist6
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction53
+private class ReduceAction55
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist6
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction54
+private class ReduceAction56
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist7
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist9
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist8
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist9
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction55
+private class ReduceAction57
super ReduceAction
redef fun action(p: Parser)
do
null,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction56
+private class ReduceAction58
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction57
+private class ReduceAction59
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pannotationsnode9 = nodearraylist7
- assert pannotationsnode9 isa nullable AAnnotations
+ var pannotationsnode10 = nodearraylist7
+ assert pannotationsnode10 isa nullable AAnnotations
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
tidnode6,
ptypenode7,
null,
- pannotationsnode9,
+ null,
+ pannotationsnode10,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction58
+private class ReduceAction60
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pexprnode8 = nodearraylist9
- assert pexprnode8 isa nullable AExpr
- var pannotationsnode9 = nodearraylist10
- assert pannotationsnode9 isa nullable AAnnotations
+ 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(
pdocnode2,
tkwredefnode3,
tkwvarnode5,
tidnode6,
ptypenode7,
- pexprnode8,
- pannotationsnode9,
+ tassignnode8,
+ pexprnode9,
+ pannotationsnode10,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction59
+private class ReduceAction61
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pexprnode10 = nodearraylist8
- assert pexprnode10 isa nullable AExpr
+ var tkwdonode11 = nodearraylist7
+ assert tkwdonode11 isa nullable TKwdo
+ var pexprnode12 = nodearraylist8
+ assert pexprnode12 isa nullable AExpr
var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
pdocnode2,
tkwredefnode3,
ptypenode7,
null,
null,
- pexprnode10
+ null,
+ tkwdonode11,
+ pexprnode12,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction60
+private class ReduceAction62
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pannotationsnode9 = nodearraylist7
- assert pannotationsnode9 isa nullable AAnnotations
- var pexprnode10 = nodearraylist9
- assert pexprnode10 isa nullable AExpr
+ 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(
pdocnode2,
tkwredefnode3,
tidnode6,
ptypenode7,
null,
- pannotationsnode9,
- pexprnode10
+ null,
+ pannotationsnode10,
+ tkwdonode11,
+ pexprnode12,
+ null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction61
+private class ReduceAction63
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pexprnode10 = nodearraylist8
- assert pexprnode10 isa nullable AExpr
+ 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(
pdocnode2,
tkwredefnode3,
ptypenode7,
null,
null,
- pexprnode10
+ null,
+ tkwdonode11,
+ pexprnode12,
+ tkwendnode13
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction62
+private class ReduceAction64
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode6 isa nullable TId
var ptypenode7 = nodearraylist6
assert ptypenode7 isa nullable AType
- var pannotationsnode9 = nodearraylist7
- assert pannotationsnode9 isa nullable AAnnotations
- var pexprnode10 = nodearraylist9
- assert pexprnode10 isa nullable AExpr
+ 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(
pdocnode2,
tkwredefnode3,
tidnode6,
ptypenode7,
null,
- pannotationsnode9,
- pexprnode10
+ null,
+ pannotationsnode10,
+ tkwdonode11,
+ pexprnode12,
+ tkwendnode13
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction63
+private class ReduceAction65
super ReduceAction
redef fun action(p: Parser)
do
assert tkwinitnode6 isa nullable TKwinit
var psignaturenode9 = nodearraylist5
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist7
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist6
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist7
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist8
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction64
+private class ReduceAction66
super ReduceAction
redef fun action(p: Parser)
do
assert pmethidnode8 isa nullable AMethid
var psignaturenode9 = nodearraylist6
assert psignaturenode9 isa nullable ASignature
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
null,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction65
+private class ReduceAction67
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist6
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist8
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist7
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist8
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist9
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction66
+private class ReduceAction68
super ReduceAction
redef fun action(p: Parser)
do
assert psignaturenode9 isa nullable ASignature
var pannotationsnode10 = nodearraylist7
assert pannotationsnode10 isa nullable AAnnotations
- var pexprnode13 = nodearraylist9
- assert pexprnode13 isa nullable AExpr
+ var tkwdonode13 = nodearraylist8
+ assert tkwdonode13 isa nullable TKwdo
+ var pexprnode14 = nodearraylist9
+ assert pexprnode14 isa nullable AExpr
+ var tkwendnode15 = nodearraylist10
+ assert tkwendnode15 isa nullable TKwend
var ppropdefnode1: nullable AMethPropdef = new AMethPropdef.init_amethpropdef(
pdocnode2,
tkwredefnode3,
pannotationsnode10,
null,
null,
- pexprnode13
+ tkwdonode13,
+ pexprnode14,
+ tkwendnode15
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction67
+private class ReduceAction69
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction68
+private class ReduceAction70
super ReduceAction
redef fun action(p: Parser)
do
null,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction69
+private class ReduceAction71
super ReduceAction
redef fun action(p: Parser)
do
null,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction70
+private class ReduceAction72
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction71
+private class ReduceAction73
super ReduceAction
redef fun action(p: Parser)
do
pannotationsnode10,
pexterncallsnode11,
pexterncodeblocknode12,
+ null,
+ null,
null
)
node_list = ppropdefnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction72
+private class ReduceAction74
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction74
+private class ReduceAction76
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pannotationsnode1 = nodearraylist2
- node_list = pannotationsnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction75
+ 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 ReduceAction77
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pannotationsnode1 = nodearraylist3
+ 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 ReduceAction78
+private class ReduceAction80
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pannotationsnode1 = nodearraylist3
+ 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 ReduceAction79
+private class ReduceAction81
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction80
+private class ReduceAction82
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction81
+private class ReduceAction83
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction82
+private class ReduceAction84
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction83
+private class ReduceAction85
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction84
+private class ReduceAction86
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction85
+private class ReduceAction87
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction86
+private class ReduceAction88
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction87
+private class ReduceAction89
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction88
+private class ReduceAction90
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction89
+private class ReduceAction91
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction90
+private class ReduceAction92
+ 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 ReduceAction93
+ 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 ReduceAction94
+ 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 ReduceAction95
+ 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 ReduceAction96
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction91
+private class ReduceAction97
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction92
+private class ReduceAction98
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction93
+private class ReduceAction99
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction94
+private class ReduceAction100
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction95
+private class ReduceAction101
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction96
+private class ReduceAction102
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction97
+private class ReduceAction103
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction98
+private class ReduceAction104
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction99
+private class ReduceAction105
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction100
+private class ReduceAction106
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction101
+private class ReduceAction107
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction102
+private class ReduceAction108
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction103
+private class ReduceAction109
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction104
+private class ReduceAction110
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction105
+private class ReduceAction111
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction106
+private class ReduceAction112
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction107
+private class ReduceAction113
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction108
+private class ReduceAction114
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction110
+private class ReduceAction116
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction111
+private class ReduceAction117
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction112
+private class ReduceAction118
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction113
+private class ReduceAction119
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction114
+private class ReduceAction120
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction115
+private class ReduceAction121
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction116
+private class ReduceAction122
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction117
+private class ReduceAction123
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction119
+private class ReduceAction125
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction120
+private class ReduceAction126
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction122
+private class ReduceAction128
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction123
+private class ReduceAction129
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction124
+private class ReduceAction130
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction125
+private class ReduceAction131
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction126
+private class ReduceAction132
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction127
+private class ReduceAction133
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction128
+private class ReduceAction134
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction129
+private class ReduceAction135
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction130
+private class ReduceAction136
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction131
+private class ReduceAction137
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction133
+private class ReduceAction139
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction134
+private class ReduceAction140
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction135
+private class ReduceAction141
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction136
+private class ReduceAction142
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction137
+private class ReduceAction143
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction139
+private class ReduceAction145
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction140
+private class ReduceAction146
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
+ var listnode5 = new Array[Object]
var tclassidnode3 = nodearraylist1
assert tclassidnode3 isa nullable TClassid
- var pannotationsnode5 = nodearraylist2
- assert pannotationsnode5 isa nullable AAnnotations
+ var pannotationsnode7 = nodearraylist2
+ assert pannotationsnode7 isa nullable AAnnotations
var ptypenode1: nullable AType = new AType.init_atype(
null,
tclassidnode3,
- listnode4,
- pannotationsnode5
+ null,
+ listnode5,
+ null,
+ pannotationsnode7
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction141
+private class ReduceAction147
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode4 = new Array[Object]
+ var listnode5 = new Array[Object]
var tkwnullablenode2 = nodearraylist1
assert tkwnullablenode2 isa nullable TKwnullable
var tclassidnode3 = nodearraylist2
assert tclassidnode3 isa nullable TClassid
- var pannotationsnode5 = nodearraylist3
- assert pannotationsnode5 isa nullable AAnnotations
+ var pannotationsnode7 = nodearraylist3
+ assert pannotationsnode7 isa nullable AAnnotations
var ptypenode1: nullable AType = new AType.init_atype(
tkwnullablenode2,
tclassidnode3,
- listnode4,
- pannotationsnode5
+ null,
+ listnode5,
+ null,
+ pannotationsnode7
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction142
+private class ReduceAction148
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
+ var listnode6 = new Array[Object]
var tclassidnode3 = nodearraylist1
assert tclassidnode3 isa nullable TClassid
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var pannotationsnode6 = nodearraylist7
- assert pannotationsnode6 isa nullable AAnnotations
+ 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,
tclassidnode3,
- listnode5,
- pannotationsnode6
+ tobranode4,
+ listnode6,
+ tcbranode7,
+ pannotationsnode8
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction143
+private class ReduceAction149
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist3 = p.pop
var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
+ var listnode6 = new Array[Object]
var tkwnullablenode2 = nodearraylist1
assert tkwnullablenode2 isa nullable TKwnullable
var tclassidnode3 = nodearraylist2
assert tclassidnode3 isa nullable TClassid
- var listnode4 = nodearraylist5
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var pannotationsnode6 = nodearraylist8
- assert pannotationsnode6 isa nullable AAnnotations
+ 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,
tclassidnode3,
- listnode5,
- pannotationsnode6
+ tobranode4,
+ listnode6,
+ tcbranode7,
+ pannotationsnode8
)
node_list = ptypenode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction144
+private class ReduceAction150
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction145
+private class ReduceAction151
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction146
+private class ReduceAction152
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction150
+private class ReduceAction156
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction151
+private class ReduceAction157
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction152
+private class ReduceAction158
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction153
+private class ReduceAction159
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction154
+private class ReduceAction160
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction155
+private class ReduceAction161
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction156
+private class ReduceAction162
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction157
+private class ReduceAction163
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction158
+private class ReduceAction164
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction159
+private class ReduceAction165
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction163
+private class ReduceAction169
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction164
+private class ReduceAction170
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction165
+private class ReduceAction171
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction166
+private class ReduceAction172
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction167
+private class ReduceAction173
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction168
+private class ReduceAction174
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction169
+private class ReduceAction175
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction177
+private class ReduceAction183
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction178
+private class ReduceAction184
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction179
+private class ReduceAction185
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction181
+private class ReduceAction187
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction182
+private class ReduceAction188
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction183
+private class ReduceAction189
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction185
+private class ReduceAction191
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction186
+private class ReduceAction192
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction187
+private class ReduceAction193
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction188
+private class ReduceAction194
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction189
+private class ReduceAction195
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction191
+private class ReduceAction197
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction192
+private class ReduceAction198
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction194
+private class ReduceAction200
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction195
+private class ReduceAction201
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction196
+private class ReduceAction202
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction197
+private class ReduceAction203
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction198
+private class ReduceAction204
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction199
+private class ReduceAction205
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction200
+private class ReduceAction206
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction201
+private class ReduceAction207
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction202
+private class ReduceAction208
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction203
+private class ReduceAction209
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction204
+private class ReduceAction210
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction205
+private class ReduceAction211
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction206
+private class ReduceAction212
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction207
+private class ReduceAction213
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction208
+private class ReduceAction214
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction211
+private class ReduceAction217
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction212
+private class ReduceAction218
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction213
+private class ReduceAction219
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction214
+private class ReduceAction220
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction215
+private class ReduceAction221
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction216
+private class ReduceAction222
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction219
+private class ReduceAction225
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction220
+private class ReduceAction226
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction221
+private class ReduceAction227
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction222
+private class ReduceAction228
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction223
+private class ReduceAction229
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction224
+private class ReduceAction230
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction225
+private class ReduceAction231
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction226
+private class ReduceAction232
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction227
+private class ReduceAction233
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction230
+private class ReduceAction236
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction231
+private class ReduceAction237
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction232
+private class ReduceAction238
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction233
+private class ReduceAction239
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction234
+private class ReduceAction240
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction235
+private class ReduceAction241
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction238
+private class ReduceAction244
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction239
+private class ReduceAction245
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction240
+private class ReduceAction246
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction241
+private class ReduceAction247
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction242
+private class ReduceAction248
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction243
+private class ReduceAction249
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction244
+private class ReduceAction250
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction245
+private class ReduceAction251
+ 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 ReduceAction252
+ 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 ReduceAction253
+ 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 ReduceAction254
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction246
+private class ReduceAction255
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction247
+private class ReduceAction256
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction248
+private class ReduceAction257
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction249
+private class ReduceAction258
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist6
- assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist8
+ 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,
- pexprnode4,
- pexprnode5
+ tkwthennode4,
+ pexprnode5,
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction250
+private class ReduceAction259
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist6
- assert pexprnode4 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,
- pexprnode4,
+ tkwthennode4,
+ pexprnode5,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction251
+private class ReduceAction260
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
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist8
+ 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,
- pexprnode4,
- pexprnode5
+ tkwthennode4,
+ pexprnode5,
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction252
+private class ReduceAction261
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
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode5 = nodearraylist6
- assert pexprnode5 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,
- pexprnode5
+ tkwelsenode6,
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction253
+private class ReduceAction262
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
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 ReduceAction263
+ 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,
- pexprnode5
+ pexprnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction256
+private class ReduceAction264
+ 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 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 ReduceAction265
+ 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 ReduceAction267
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction257
+private class ReduceAction268
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction258
+private class ReduceAction269
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction259
+private class ReduceAction270
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction260
+private class ReduceAction271
super ReduceAction
redef fun action(p: Parser)
do
var listnode3 = nodearraylist3
assert listnode3 isa Array[Object]
listnode4 = concat(listnode4, listnode3)
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
- var tkwdonode6 = nodearraylist9
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist10
- assert pexprnode7 isa nullable AExpr
- var plabelnode8 = nodearraylist11
- assert plabelnode8 isa nullable ALabel
+ var tkwinnode5 = nodearraylist5
+ assert tkwinnode5 isa nullable TKwin
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var tkwdonode7 = nodearraylist9
+ assert tkwdonode7 isa nullable TKwdo
+ var pexprnode8 = nodearraylist10
+ assert pexprnode8 isa nullable AExpr
+ var plabelnode9 = nodearraylist11
+ assert plabelnode9 isa nullable ALabel
var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
tkwfornode2,
listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
- plabelnode8
+ tkwinnode5,
+ pexprnode6,
+ tkwdonode7,
+ pexprnode8,
+ plabelnode9
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction261
+private class ReduceAction272
super ReduceAction
redef fun action(p: Parser)
do
var listnode3 = nodearraylist3
assert listnode3 isa Array[Object]
listnode4 = concat(listnode4, listnode3)
- var pexprnode5 = nodearraylist7
- assert pexprnode5 isa nullable AExpr
- var tkwdonode6 = nodearraylist9
- assert tkwdonode6 isa nullable TKwdo
- var pexprnode7 = nodearraylist10
- assert pexprnode7 isa nullable AExpr
+ var tkwinnode5 = nodearraylist5
+ assert tkwinnode5 isa nullable TKwin
+ var pexprnode6 = nodearraylist7
+ assert pexprnode6 isa nullable AExpr
+ var tkwdonode7 = nodearraylist9
+ assert tkwdonode7 isa nullable TKwdo
+ var pexprnode8 = nodearraylist10
+ assert pexprnode8 isa nullable AExpr
var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
tkwfornode2,
listnode4,
- pexprnode5,
- tkwdonode6,
- pexprnode7,
+ tkwinnode5,
+ pexprnode6,
+ tkwdonode7,
+ pexprnode8,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction262
+private class ReduceAction273
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction263
+private class ReduceAction274
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction264
+private class ReduceAction275
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction265
+private class ReduceAction276
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction267
+private class ReduceAction278
super ReduceAction
redef fun action(p: Parser)
do
assert tkwassertnode2 isa nullable TKwassert
var pexprnode4 = nodearraylist2
assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist4
- assert pexprnode5 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,
- pexprnode5
+ tkwelsenode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction268
+private class ReduceAction279
super ReduceAction
redef fun action(p: Parser)
do
assert tidnode3 isa nullable TId
var pexprnode4 = nodearraylist3
assert pexprnode4 isa nullable AExpr
- var pexprnode5 = nodearraylist5
- assert pexprnode5 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,
- pexprnode5
+ tkwelsenode5,
+ pexprnode6
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction269
+private class ReduceAction280
super ReduceAction
redef fun action(p: Parser)
do
tkwassertnode2,
null,
pexprnode4,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction270
+private class ReduceAction281
super ReduceAction
redef fun action(p: Parser)
do
tkwassertnode2,
tidnode3,
pexprnode4,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction271
+private class ReduceAction282
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction273
+private class ReduceAction284
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction275
+private class ReduceAction286
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction276
+private class ReduceAction287
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction277
+private class ReduceAction288
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction278
+private class ReduceAction289
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction280
+private class ReduceAction291
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction282
+private class ReduceAction293
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction283
+private class ReduceAction294
+ 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
+ )
+ node_list = pexprnode1
+ 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 nodearraylist4 = p.pop
+ 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
+ assert pexprnode4 isa nullable AExpr
+ var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
+ pexprnode2,
+ tltnode3,
+ pexprnode4
+ )
+ node_list = pexprnode1
+ 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 nodearraylist4 = p.pop
+ 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
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction297
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tnenode3 = nodearraylist2
- assert tnenode3 isa nullable TNe
+ var tgtnode3 = nodearraylist2
+ assert tgtnode3 isa nullable TGt
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
+ var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
pexprnode2,
- tnenode3,
+ tgtnode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction284
+private class ReduceAction298
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tltnode3 = nodearraylist2
- assert tltnode3 isa nullable TLt
+ var tgenode3 = nodearraylist2
+ assert tgenode3 isa nullable TGe
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
+ var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
pexprnode2,
- tltnode3,
+ tgenode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction285
+private class ReduceAction299
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tlenode3 = nodearraylist2
- assert tlenode3 isa nullable TLe
+ var tstarshipnode3 = nodearraylist2
+ assert tstarshipnode3 isa nullable TStarship
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
+ var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
pexprnode2,
- tlenode3,
+ tstarshipnode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction286
+private class ReduceAction300
super ReduceAction
redef fun action(p: Parser)
do
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(
+ 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,
- tllnode3,
- pexprnode4
+ tkwisanode3,
+ ptypenode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction287
+private class ReduceAction302
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tgtnode3 = nodearraylist2
- assert tgtnode3 isa nullable TGt
+ var tpipenode3 = nodearraylist2
+ assert tpipenode3 isa nullable TPipe
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
+ var pexprnode1: nullable APipeExpr = new APipeExpr.init_apipeexpr(
pexprnode2,
- tgtnode3,
+ tpipenode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction288
+private class ReduceAction304
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tgenode3 = nodearraylist2
- assert tgenode3 isa nullable TGe
+ var tcaretnode3 = nodearraylist2
+ assert tcaretnode3 isa nullable TCaret
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
+ var pexprnode1: nullable ACaretExpr = new ACaretExpr.init_acaretexpr(
pexprnode2,
- tgenode3,
+ tcaretnode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction289
+private class ReduceAction306
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tggnode3 = nodearraylist2
- assert tggnode3 isa nullable TGg
+ var tampnode3 = nodearraylist2
+ assert tampnode3 isa nullable TAmp
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
+ var pexprnode1: nullable AAmpExpr = new AAmpExpr.init_aampexpr(
pexprnode2,
- tggnode3,
+ tampnode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction290
+private class ReduceAction308
super ReduceAction
redef fun action(p: Parser)
do
var nodearraylist1 = p.pop
var pexprnode2 = nodearraylist1
assert pexprnode2 isa nullable AExpr
- var tstarshipnode3 = nodearraylist2
- assert tstarshipnode3 isa nullable TStarship
+ var tllnode3 = nodearraylist2
+ assert tllnode3 isa nullable TLl
var pexprnode4 = nodearraylist4
assert pexprnode4 isa nullable AExpr
- var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
+ var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
pexprnode2,
- tstarshipnode3,
+ tllnode3,
pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction291
+private class ReduceAction309
super ReduceAction
redef fun action(p: Parser)
do
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(
+ 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,
- tkwisanode3,
- ptypenode4
+ tggnode3,
+ pexprnode4
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction293
+private class ReduceAction311
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction294
+private class ReduceAction312
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction296
+private class ReduceAction314
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction297
+private class ReduceAction315
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction298
+private class ReduceAction316
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction300
+private class ReduceAction318
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction302
+private class ReduceAction320
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction303
+private class ReduceAction321
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction304
+private class ReduceAction322
+ super ReduceAction
+ redef fun action(p: Parser)
+ do
+ var node_list: nullable Object = null
+ 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
+ )
+ node_list = pexprnode1
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction323
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction306
+private class ReduceAction325
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction307
+private class ReduceAction326
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction308
+private class ReduceAction327
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction309
+private class ReduceAction328
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction311
+private class ReduceAction330
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction312
+private class ReduceAction331
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction314
+private class ReduceAction333
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction316
+private class ReduceAction335
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction318
+private class ReduceAction337
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction322
+private class ReduceAction341
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction324
+private class ReduceAction343
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction326
+private class ReduceAction345
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction330
+private class ReduceAction349
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction332
+private class ReduceAction351
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction334
+private class ReduceAction353
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction335
+private class ReduceAction354
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction336
+private class ReduceAction355
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction337
+private class ReduceAction356
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction338
+private class ReduceAction357
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction339
+private class ReduceAction358
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction340
+private class ReduceAction359
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction341
+private class ReduceAction360
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction344
+private class ReduceAction363
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction345
+private class ReduceAction364
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction346
+private class ReduceAction365
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction347
+private class ReduceAction367
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction348
+private class ReduceAction368
+ 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 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 ReduceAction369
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction349
+private class ReduceAction370
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction350
+private class ReduceAction371
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction351
+private class ReduceAction372
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction352
+private class ReduceAction373
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction353
+private class ReduceAction374
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction354
+private class ReduceAction375
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction355
+private class ReduceAction376
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction356
+private class ReduceAction377
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction359
+private class ReduceAction380
super ReduceAction
redef fun action(p: Parser)
do
assert tobranode2 isa nullable TObra
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var tcbranode5 = nodearraylist9
- assert tcbranode5 isa nullable TCbra
- var pannotationsnode6 = nodearraylist10
- assert pannotationsnode6 isa nullable AAnnotations
+ 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,
- pexprnode4,
- tcbranode5,
- pannotationsnode6
+ tdotdotnode4,
+ pexprnode5,
+ tcbranode6,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction360
+private class ReduceAction381
super ReduceAction
redef fun action(p: Parser)
do
assert tobranode2 isa nullable TObra
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 isa nullable AExpr
- var tobranode5 = nodearraylist9
- assert tobranode5 isa nullable TObra
- var pannotationsnode6 = nodearraylist10
- assert pannotationsnode6 isa nullable AAnnotations
+ 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,
- pexprnode4,
- tobranode5,
- pannotationsnode6
+ tdotdotnode4,
+ pexprnode5,
+ tobranode6,
+ pannotationsnode7
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction361
+private class ReduceAction382
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction362
+private class ReduceAction383
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction364
+private class ReduceAction385
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction365
+private class ReduceAction386
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction366
+private class ReduceAction387
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction367
+private class ReduceAction388
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction369
+private class ReduceAction390
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction371
+private class ReduceAction392
super ReduceAction
redef fun action(p: Parser)
do
assert tkwifnode2 isa nullable TKwif
var pexprnode3 = nodearraylist3
assert pexprnode3 isa nullable AExpr
- var pexprnode4 = nodearraylist7
- assert pexprnode4 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,
- pexprnode4,
+ tkwthennode4,
+ pexprnode5,
+ null,
null
)
node_list = pexprnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction372
+private class ReduceAction393
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction373
+private class ReduceAction394
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction374
+private class ReduceAction395
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction375
+private class ReduceAction396
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction376
+private class ReduceAction397
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction379
+private class ReduceAction400
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction380
+private class ReduceAction401
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction381
+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 listnode5 = new Array[Object]
- var tatnode2 = nodearraylist1
- assert tatnode2 isa nullable TAt
- var pannotationnode4 = nodearraylist2
- assert pannotationnode4 isa nullable AAnnotation
- if pannotationnode4 != null then
- listnode5.add(pannotationnode4)
+ 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(
- tatnode2,
null,
- listnode5,
+ tatnode3,
+ null,
+ listnode6,
+ null,
null
)
node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction382
+private class ReduceAction403
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 listnode5 = new Array[Object]
- var tatnode2 = nodearraylist1
- assert tatnode2 isa nullable TAt
- var toparnode3 = nodearraylist2
- assert toparnode3 isa nullable TOpar
- var listnode4 = nodearraylist4
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var tcparnode6 = nodearraylist6
- assert tcparnode6 isa nullable TCpar
+ 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(
- tatnode2,
- toparnode3,
- listnode5,
- tcparnode6
+ null,
+ tatnode3,
+ toparnode4,
+ listnode6,
+ tcparnode7,
+ null
)
node_list = pannotationsnode1
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction383
+private class ReduceAction404
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction385
+private class ReduceAction406
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction386
+private class ReduceAction407
super ReduceAction
redef fun action(p: Parser)
do
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 nodearraylist1 = p.pop
- var listnode5 = new Array[Object]
- var listnode4 = nodearraylist1
- assert listnode4 isa Array[Object]
- listnode5 = concat(listnode5, listnode4)
- var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
- null,
- null,
- listnode5,
- null
- )
- node_list = pannotationsnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction388
+private class ReduceAction408
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction389
+private class ReduceAction409
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction392
+private class ReduceAction412
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction394
+private class ReduceAction414
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction396
+private class ReduceAction415
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction397
+private class ReduceAction416
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction398
+private class ReduceAction417
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction399
+private class ReduceAction418
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction400
+private class ReduceAction419
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction401
+private class ReduceAction420
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction402
+private class ReduceAction421
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction403
+private class ReduceAction422
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction404
+private class ReduceAction423
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction405
+private class ReduceAction424
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction409
+private class ReduceAction428
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction412
+private class ReduceAction431
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction413
+private class ReduceAction432
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction414
+private class ReduceAction433
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction415
+private class ReduceAction434
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction416
+private class ReduceAction435
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction417
+private class ReduceAction436
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction418
+private class ReduceAction437
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction419
+private class ReduceAction438
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction421
+private class ReduceAction440
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction423
+private class ReduceAction442
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction424
+private class ReduceAction443
super ReduceAction
redef fun action(p: Parser)
do
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 listnode3 = new Array[Object]
- var listnode2 = nodearraylist1
- assert listnode2 isa Array[Object]
- listnode3 = concat(listnode3, listnode2)
- var pexprsnode1: nullable AListExprs = new AListExprs.init_alistexprs(
- listnode3
- )
- node_list = pexprsnode1
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction427
+private class ReduceAction445
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction428
+private class ReduceAction446
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction429
+private class ReduceAction447
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction430
+private class ReduceAction448
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction431
+private class ReduceAction449
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction432
+private class ReduceAction450
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction433
+private class ReduceAction451
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction434
+private class ReduceAction452
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction435
+private class ReduceAction453
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction436
+private class ReduceAction454
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction437
+private class ReduceAction455
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction438
+private class ReduceAction456
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction439
+private class ReduceAction457
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction441
+private class ReduceAction459
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction442
+private class ReduceAction460
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction443
+private class ReduceAction461
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction445
+private class ReduceAction463
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction446
+private class ReduceAction464
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction447
+private class ReduceAction465
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction449
+private class ReduceAction467
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction450
+private class ReduceAction468
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction452
+private class ReduceAction470
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction453
+private class ReduceAction471
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction455
+private class ReduceAction474
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction456
+private class ReduceAction475
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction459
+private class ReduceAction478
super ReduceAction
redef fun action(p: Parser)
do
var node_list: nullable Object = null
+ var nodearraylist2 = p.pop
var nodearraylist1 = p.pop
- var pdocnode1 = nodearraylist1
+ node_list = null
+ 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
+ node_list = null
+ p.push(p.go_to(_goto), node_list)
+ end
+end
+private class ReduceAction481
+ 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 ReduceAction460
+private class ReduceAction482
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 ReduceAction461
+private class ReduceAction484
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 ReduceAction486
+ 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 ReduceAction487
+ 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 ReduceAction490
+ 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 ReduceAction793
+private class ReduceAction853
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction795
+private class ReduceAction855
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction796
+private class ReduceAction856
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction797
+private class ReduceAction857
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction798
+private class ReduceAction858
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction799
+private class ReduceAction859
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction806
+private class ReduceAction866
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction807
+private class ReduceAction867
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction830
+private class ReduceAction892
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction831
+private class ReduceAction893
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction989
+private class ReduceAction1054
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction990
+private class ReduceAction1055
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction991
+private class ReduceAction1056
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction992
+private class ReduceAction1057
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction993
+private class ReduceAction1058
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction994
+private class ReduceAction1059
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction995
+private class ReduceAction1061
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 pformaldefnode1 = nodearraylist1
- if pformaldefnode1 != null then
- listnode2.add(pformaldefnode1)
+ var listnode3 = new Array[Object]
+ var listnode1 = nodearraylist1
+ assert listnode1 isa Array[Object]
+ var pformaldefnode2 = nodearraylist2
+ listnode3 = concat(listnode3, listnode1)
+ if pformaldefnode2 != null then
+ listnode3.add(pformaldefnode2)
end
- node_list = listnode2
+ node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction996
+private class ReduceAction1063
super ReduceAction
redef fun action(p: Parser)
do
var listnode3 = new Array[Object]
var listnode1 = nodearraylist1
assert listnode1 isa Array[Object]
- var pformaldefnode2 = nodearraylist2
+ var ppropdefnode2 = nodearraylist2
listnode3 = concat(listnode3, listnode1)
- if pformaldefnode2 != null then
- listnode3.add(pformaldefnode2)
+ if ppropdefnode2 != null then
+ listnode3.add(ppropdefnode2)
end
node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction998
+private class ReduceAction1065
super ReduceAction
redef fun action(p: Parser)
do
var listnode3 = new Array[Object]
var listnode1 = nodearraylist1
assert listnode1 isa Array[Object]
- var ppropdefnode2 = nodearraylist2
+ var pannotationnode2 = nodearraylist2
listnode3 = concat(listnode3, listnode1)
- if ppropdefnode2 != null then
- listnode3.add(ppropdefnode2)
+ if pannotationnode2 != null then
+ listnode3.add(pannotationnode2)
end
node_list = listnode3
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction999
+private class ReduceAction1066
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1000
+private class ReduceAction1067
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1001
+private class ReduceAction1068
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1002
+private class ReduceAction1069
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1004
+private class ReduceAction1071
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1006
+private class ReduceAction1073
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1012
+private class ReduceAction1079
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1014
- 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 listnode1 = nodearraylist1
- assert listnode1 isa Array[Object]
- var pannotationnode2 = nodearraylist2
- listnode3 = concat(listnode3, listnode1)
- if pannotationnode2 != null then
- listnode3.add(pannotationnode2)
- end
- node_list = listnode3
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction1022
+private class ReduceAction1087
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1023
+private class ReduceAction1088
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1024
+private class ReduceAction1089
super ReduceAction
redef fun action(p: Parser)
do
p.push(p.go_to(_goto), node_list)
end
end
-private class ReduceAction1025
- super ReduceAction
- redef fun action(p: Parser)
- do
- var node_list: nullable Object = null
- var nodearraylist1 = p.pop
- var listnode2 = new Array[Object]
- var teolnode1 = nodearraylist1
- if teolnode1 != null then
- listnode2.add(teolnode1)
- end
- node_list = listnode2
- p.push(p.go_to(_goto), node_list)
- end
-end
-private class ReduceAction1026
- 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 listnode1 = nodearraylist1
- assert listnode1 isa Array[Object]
- var teolnode2 = nodearraylist2
- listnode3 = concat(listnode3, listnode1)
- if teolnode2 != null then
- listnode3.add(teolnode2)
- end
- node_list = listnode3
- p.push(p.go_to(_goto), node_list)
- end
-end
class TStarstareq
super Token
end
+class TPipeeq
+ super Token
+end
+class TCareteq
+ super Token
+end
+class TAmpeq
+ super Token
+end
class TLleq
super Token
end
class TPercent
super Token
end
+class TPipe
+ super Token
+end
+class TCaret
+ super Token
+end
+class TAmp
+ super Token
+end
+class TTilde
+ super Token
+end
class TEq
super Token
end
class TAt
super Token
end
+class TSemi
+ super Token
+end
class TClassid
super Token
end
var n_visibility: AVisibility is writable, noinit
var n_classkind: AClasskind is writable, noinit
var n_id: nullable TClassid = null is writable
+ var n_obra: nullable TObra = null is writable
var n_formaldefs: List[AFormaldef] = new List[AFormaldef]
+ var n_cbra: nullable TCbra = null is writable
var n_extern_code_block: nullable AExternCodeBlock = null is writable
var n_propdefs: List[APropdef] = new List[APropdef]
var n_kwend: TKwend is writable, noinit
var n_kwvar: TKwvar is writable, noinit
var n_id2: TId is writable, noinit
var n_type: nullable AType = null is writable
+ var n_assign: nullable TAssign = null is writable
var n_expr: nullable AExpr = null is writable
var n_annotations: nullable AAnnotations = null is writable
+ var n_kwdo: nullable TKwdo = null is writable
var n_block: nullable AExpr = null is writable
+ var n_kwend: nullable TKwend = null is writable
end
class AMainMethPropdef
super APropdef
var n_annotations: nullable AAnnotations = null is writable
var n_extern_calls: nullable AExternCalls = null is writable
var n_extern_code_block: nullable AExternCodeBlock = null is writable
+ var n_kwdo: nullable TKwdo = null is writable
var n_block: nullable AExpr = null is writable
+ var n_kwend: nullable TKwend = null is writable
end
class ASuperPropdef
super APropdef
end
class APlusMethid
super AMethid
- var n_plus: TPlus is writable, noinit
+ var n_op: TPlus is writable, noinit
end
class AMinusMethid
super AMethid
- var n_minus: TMinus is writable, noinit
+ var n_op: TMinus is writable, noinit
end
class AStarMethid
super AMethid
- var n_star: TStar is writable, noinit
+ var n_op: TStar is writable, noinit
end
class AStarstarMethid
super AMethid
- var n_starstar: TStarstar is writable, noinit
+ var n_op: TStarstar is writable, noinit
end
class ASlashMethid
super AMethid
- var n_slash: TSlash is writable, noinit
+ var n_op: TSlash is writable, noinit
end
class APercentMethid
super AMethid
- var n_percent: TPercent is writable, noinit
+ var n_op: TPercent is writable, noinit
end
class AEqMethid
super AMethid
- var n_eq: TEq is writable, noinit
+ var n_op: TEq is writable, noinit
end
class ANeMethid
super AMethid
- var n_ne: TNe is writable, noinit
+ var n_op: TNe is writable, noinit
end
class ALeMethid
super AMethid
- var n_le: TLe is writable, noinit
+ var n_op: TLe is writable, noinit
end
class AGeMethid
super AMethid
- var n_ge: TGe is writable, noinit
+ var n_op: TGe is writable, noinit
end
class ALtMethid
super AMethid
- var n_lt: TLt is writable, noinit
+ var n_op: TLt is writable, noinit
end
class AGtMethid
super AMethid
- var n_gt: TGt is writable, noinit
+ var n_op: TGt is writable, noinit
end
class ALlMethid
super AMethid
- var n_ll: TLl is writable, noinit
+ var n_op: TLl is writable, noinit
end
class AGgMethid
super AMethid
- var n_gg: TGg is writable, noinit
+ var n_op: TGg is writable, noinit
+end
+class AStarshipMethid
+ super AMethid
+ var n_op: TStarship is writable, noinit
+end
+class APipeMethid
+ super AMethid
+ var n_op: TPipe is writable, noinit
+end
+class ACaretMethid
+ super AMethid
+ var n_op: TCaret is writable, noinit
+end
+class AAmpMethid
+ super AMethid
+ var n_op: TAmp is writable, noinit
+end
+class ATildeMethid
+ super AMethid
+ var n_op: TTilde is writable, noinit
end
class ABraMethid
super AMethid
var n_obra: TObra is writable, noinit
var n_cbra: TCbra is writable, noinit
end
-class AStarshipMethid
- super AMethid
- var n_starship: TStarship is writable, noinit
-end
class AAssignMethid
super AMethid
var n_id: TId is writable, noinit
super AType
var n_kwnullable: nullable TKwnullable = null is writable
var n_id: TClassid is writable, noinit
+ var n_obra: nullable TObra = null is writable
var n_types: List[AType] = new List[AType]
+ var n_cbra: nullable TCbra = null is writable
var n_annotations: nullable AAnnotations = null is writable
end
class ALabel
super AExpr
var n_kwif: TKwif is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_kwthen: TKwthen is writable, noinit
var n_then: nullable AExpr = null is writable
+ var n_kwelse: nullable TKwelse = null is writable
var n_else: nullable AExpr = null is writable
end
class AIfexprExpr
super AExpr
var n_kwfor: TKwfor is writable, noinit
var n_ids: List[TId] = new List[TId]
+ var n_kwin: TKwin is writable, noinit
var n_expr: AExpr is writable, noinit
var n_kwdo: TKwdo is writable, noinit
var n_block: nullable AExpr = null is writable
var n_kwassert: TKwassert is writable, noinit
var n_id: nullable TId = null is writable
var n_expr: AExpr is writable, noinit
+ var n_kwelse: nullable TKwelse = null is writable
var n_else: nullable AExpr = null is writable
end
class AOnceExpr
var n_op: TPercent is writable, noinit
var n_expr2: AExpr is writable, noinit
end
+class APipeExpr
+ super AExpr
+ var n_expr: AExpr is writable, noinit
+ var n_op: TPipe is writable, noinit
+ var n_expr2: AExpr is writable, noinit
+end
+class ACaretExpr
+ super AExpr
+ var n_expr: AExpr is writable, noinit
+ var n_op: TCaret is writable, noinit
+ var n_expr2: AExpr is writable, noinit
+end
+class AAmpExpr
+ super AExpr
+ var n_expr: AExpr is writable, noinit
+ var n_op: TAmp is writable, noinit
+ var n_expr2: AExpr is writable, noinit
+end
class AUminusExpr
super AExpr
- var n_minus: TMinus is writable, noinit
+ var n_op: TMinus is writable, noinit
var n_expr: AExpr is writable, noinit
end
class AUplusExpr
super AExpr
- var n_plus: TPlus is writable, noinit
+ var n_op: TPlus is writable, noinit
+ var n_expr: AExpr is writable, noinit
+end
+class AUtildeExpr
+ super AExpr
+ var n_op: TTilde is writable, noinit
var n_expr: AExpr is writable, noinit
end
class ANewExpr
super AExpr
var n_obra: TObra is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_dotdot: TDotdot is writable, noinit
var n_expr2: AExpr is writable, noinit
var n_cbra: TCbra is writable, noinit
var n_annotations: nullable AAnnotations = null is writable
super AExpr
var n_obra: TObra is writable, noinit
var n_expr: AExpr is writable, noinit
+ var n_dotdot: TDotdot is writable, noinit
var n_expr2: AExpr is writable, noinit
var n_cbra: TObra is writable, noinit
var n_annotations: nullable AAnnotations = null is writable
var n_expr: AExpr is writable, noinit
var n_dotdotdot: TDotdotdot is writable, noinit
end
+class ANamedargExpr
+ super AExpr
+ var n_id: TId is writable, noinit
+ var n_assign: TAssign is writable, noinit
+ var n_expr: AExpr is writable, noinit
+end
class ATypeExpr
super AExpr
var n_type: AType is writable, noinit
super AAssignOp
var n_op: TStarstareq is writable, noinit
end
+class APipeAssignOp
+ super AAssignOp
+ var n_op: TPipeeq is writable, noinit
+end
+class ACaretAssignOp
+ super AAssignOp
+ var n_op: TCareteq is writable, noinit
+end
+class AAmpAssignOp
+ super AAssignOp
+ var n_op: TAmpeq is writable, noinit
+end
class ALlAssignOp
super AAssignOp
var n_op: TLleq is writable, noinit
end
class AAnnotations
super AAnnotations
+ var n_kwis: nullable TKwis = null is writable
var n_at: nullable TAt = null is writable
var n_opar: nullable TOpar = null is writable
var n_items: List[AAnnotation] = new List[AAnnotation]
var n_cpar: nullable TCpar = null is writable
+ var n_kwend: nullable TKwend = null is writable
end
class AAnnotation
super AAnnotation
super TokenOperator
end
+# The operator `|=`
+class TPipeeq
+ super TokenOperator
+end
+
+# The operator `^=`
+class TCareteq
+ super TokenOperator
+end
+
+# The operator `&=`
+class TAmpeq
+ super TokenOperator
+end
+
# The operator `<<=`
class TLleq
super TokenOperator
super TokenOperator
end
-# The operator `+%
+# The operator `%`
class TPercent
super TokenOperator
end
+# The operator `|`
+class TPipe
+ super TokenOperator
+end
+
+# The operator `^`
+class TCaret
+ super TokenOperator
+end
+
+# The operator `&`
+class TAmp
+ super TokenOperator
+end
+
+# The operator `~`
+class TTilde
+ super TokenOperator
+end
+
# The operator `==`
class TEq
super TokenOperator
super Token
end
+# The symbol `;`
+class TSemi
+ super Token
+end
+
# A class (or formal type) identifier. They start with an uppercase.
class TClassid
super Token
# The name of the class
var n_id: nullable TClassid = null is writable
+ # The `[` symbol
+ var n_obra: nullable TObra = null is writable
+
# The list of formal parameter types
var n_formaldefs = new ANodes[AFormaldef](self)
+ # The `]` symbol
+ var n_cbra: nullable TCbra = null is writable
+
# The extern block code
var n_extern_code_block: nullable AExternCodeBlock = null is writable
class AAttrPropdef
super APropdef
- # The identifier for a old-style attribute (null if new-style)
+ # The `var` keyword
var n_kwvar: TKwvar is writable, noinit
- # The identifier for a new-style attribute (null if old-style)
+ # The identifier for a new-style attribute
var n_id2: TId is writable, noinit
# The declared type of the attribute
var n_type: nullable AType = null is writable
+ # The `=` symbol
+ var n_assign: nullable TAssign = null is writable
+
# The initial value, if any (set with `=`)
var n_expr: nullable AExpr = null is writable
+ # The `do` keyword
+ var n_kwdo: nullable TKwdo = null is writable
+
# The initial value, if any (set with `do return`)
var n_block: nullable AExpr = null is writable
+ # The `end` keyword
+ var n_kwend: nullable TKwend = null is writable
+
redef fun hot_location
do
return n_id2.location
# The signature of the method, if any
var n_signature: nullable ASignature = null is writable
+ # The `do` keyword
+ var n_kwdo: nullable TKwdo = null is writable
+
# The body (in Nit) of the method, if any
var n_block: nullable AExpr = null is writable
+ # The `end` keyword
+ var n_kwend: nullable TKwend = null is writable
+
# The list of declared callbacks (for extern methods)
var n_extern_calls: nullable AExternCalls = null is writable
var n_id: TId is writable, noinit
end
-# A method name `+`
-class APlusMethid
+# A method name for an operator
+class AOperatorMethid
super AMethid
- # The `+` symbol
- var n_plus: TPlus is writable, noinit
+ # The associated operator symbol
+ var n_op: Token is writable, noinit
+end
+# A method name `+`
+class APlusMethid
+ super AOperatorMethid
end
# A method name `-`
class AMinusMethid
- super AMethid
-
- # The `-` symbol
- var n_minus: TMinus is writable, noinit
+ super AOperatorMethid
end
# A method name `*`
class AStarMethid
- super AMethid
-
- # The `*` symbol
- var n_star: TStar is writable, noinit
+ super AOperatorMethid
end
# A method name `**`
class AStarstarMethid
- super AMethid
-
- # The `**` symbol
- var n_starstar: TStarstar is writable, noinit
+ super AOperatorMethid
end
# A method name `/`
class ASlashMethid
- super AMethid
-
- # The `/` symbol
- var n_slash: TSlash is writable, noinit
+ super AOperatorMethid
end
# A method name `%`
class APercentMethid
- super AMethid
+ super AOperatorMethid
+end
+
+# A method name `|`
+class APipeMethid
+ super AOperatorMethid
+end
+
+# A method name `^`
+class ACaretMethid
+ super AOperatorMethid
+end
- # The `%` symbol
- var n_percent: TPercent is writable, noinit
+# A method name `&`
+class AAmpMethid
+ super AOperatorMethid
+end
+
+# A method name `~`
+class ATildeMethid
+ super AOperatorMethid
end
# A method name `==`
class AEqMethid
- super AMethid
-
- # The `==` symbol
- var n_eq: TEq is writable, noinit
+ super AOperatorMethid
end
# A method name `!=`
class ANeMethid
- super AMethid
-
- # The `!=` symbol
- var n_ne: TNe is writable, noinit
+ super AOperatorMethid
end
# A method name `<=`
class ALeMethid
- super AMethid
-
- # The `<=` symbol
- var n_le: TLe is writable, noinit
+ super AOperatorMethid
end
# A method name `>=`
class AGeMethid
- super AMethid
-
- # The `>=` symbol
- var n_ge: TGe is writable, noinit
+ super AOperatorMethid
end
# A method name `<`
class ALtMethid
- super AMethid
-
- # The `<` symbol
- var n_lt: TLt is writable, noinit
+ super AOperatorMethid
end
# A method name `>`
class AGtMethid
- super AMethid
-
- # The `>` symbol
- var n_gt: TGt is writable, noinit
+ super AOperatorMethid
end
# A method name `<<`
class ALlMethid
- super AMethid
-
- # The `<<` symbol
- var n_ll: TLl is writable, noinit
+ super AOperatorMethid
end
# A method name `>>`
class AGgMethid
- super AMethid
+ super AOperatorMethid
+end
- # The `>>` symbol
- var n_gg: TGg is writable, noinit
+# A method name `<=>`
+class AStarshipMethid
+ super AOperatorMethid
end
# A method name `[]`
var n_cbra: TCbra is writable, noinit
end
-# A method name `<=>`
-class AStarshipMethid
- super AMethid
-
- # The `<=>` symbol
- var n_starship: TStarship is writable, noinit
-end
-
# A setter method name with a simple identifier (with a `=`)
class AAssignMethid
super AMethid
# The name of the class or of the formal type
var n_id: TClassid is writable, noinit
+ # The opening bracket
+ var n_obra: nullable TObra = null is writable
+
# Type arguments for a generic type
var n_types = new ANodes[AType](self)
+
+ # The closing bracket
+ var n_cbra: nullable TCbra = null is writable
end
# A label at the end of a block or in a break/continue statement. eg `label x`
# The expression used as the condition of the `if`
var n_expr: AExpr is writable, noinit
+ # The `then` keyword
+ var n_kwthen: TKwthen is writable, noinit
+
# The body of the `then` part
var n_then: nullable AExpr = null is writable
+ # The `else` keyword
+ var n_kwelse: nullable TKwelse = null is writable
+
# The body of the `else` part
var n_else: nullable AExpr = null is writable
end
# The list of name of the automatic variables
var n_ids = new ANodes[TId](self)
+ # The `in` keyword
+ var n_kwin: TKwin is writable, noinit
+
# The expression used as the collection to iterate on
var n_expr: AExpr is writable, noinit
# The expression used as the condition of the `assert`
var n_expr: AExpr is writable, noinit
+ # The `else` keyword
+ var n_kwelse: nullable TKwelse = null is writable
+
# The body to execute when the assert fails
var n_else: nullable AExpr = null is writable
end
redef fun operator do return "%"
end
-# A unary minus expression. eg `-x`
-class AUminusExpr
+# A `|` expression
+class APipeExpr
+ super ABinopExpr
+ redef fun operator do return "|"
+end
+
+# A `^` expression
+class ACaretExpr
+ super ABinopExpr
+ redef fun operator do return "^"
+end
+
+# A `&` expression
+class AAmpExpr
+ super ABinopExpr
+ redef fun operator do return "&"
+end
+
+# A unary operation on a method
+class AUnaryopExpr
super ASendExpr
- # The `-` symbol
- var n_minus: TMinus is writable, noinit
+ # The operator
+ var n_op: Token is writable, noinit
+
+ # The name of the operator (eg '+')
+ fun operator: String is abstract
+end
+
+# A unary minus expression. eg `-x`
+class AUminusExpr
+ super AUnaryopExpr
+ redef fun operator do return "-"
end
# A unary plus expression. eg `+x`
class AUplusExpr
- super ASendExpr
+ super AUnaryopExpr
+ redef fun operator do return "+"
+end
- # The `+` symbol
- var n_plus: TPlus is writable, noinit
+# A unary `~` expression
+class AUtildeExpr
+ super AUnaryopExpr
+ redef fun operator do return "~"
end
# An explicit instantiation. eg `new T`
# The left (lower) element of the range
var n_expr: AExpr is writable, noinit
- # The right (uppr) element of the range
+ # The `..`
+ var n_dotdot: TDotdot is writable, noinit
+
+ # The right (upper) element of the range
var n_expr2: AExpr is writable, noinit
end
var n_dotdotdot: TDotdotdot is writable, noinit
end
+# An named notation used to pass an expression by name in a parameter
+class ANamedargExpr
+ super AExpr
+
+ # The name of the argument
+ var n_id: TId is writable, noinit
+
+ # The `=` synbol
+ var n_assign: TAssign is writable, noinit
+
+ # The passed expression
+ var n_expr: AExpr is writable, noinit
+end
+
# A list of expression separated with commas (arguments for instance)
class AManyExpr
super AExpr
redef fun operator do return "**"
end
+# A `|=` assignment operation
+class APipeAssignOp
+ super AAssignOp
+
+ redef fun operator do return "|"
+end
+
+# A `^=` assignment operation
+class ACaretAssignOp
+ super AAssignOp
+
+ redef fun operator do return "^"
+end
+
+# A `&=` assignment operation
+class AAmpAssignOp
+ super AAssignOp
+
+ redef fun operator do return "&"
+end
+
# A `<<=` assignment operation
class ALlAssignOp
super AAssignOp
class AAnnotations
super Prod
+ # The `is` keyword, for *is* annotations
+ var n_kwis: nullable TKwis = null is writable
+
# The `@` symbol, for *at* annotations
var n_at: nullable TAt = null is writable
# The closing parenthesis in *at* annotations
var n_cpar: nullable TCpar = null is writable
+
+ # The `end` keyword, for *is* annotations
+ var n_kwend: nullable TKwend = null is writable
end
# A single annotation
n_visibility: nullable AVisibility,
n_classkind: nullable AClasskind,
n_id: nullable TClassid,
+ n_obra: nullable TObra,
n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
+ n_cbra: nullable TCbra,
n_extern_code_block: nullable AExternCodeBlock,
n_propdefs: Collection[Object], # Should be Collection[APropdef]
n_kwend: nullable TKwend
n_classkind.parent = self
_n_id = n_id
if n_id != null then n_id.parent = self
+ _n_obra = n_obra
+ if n_obra != null then n_obra.parent = self
self.n_formaldefs.unsafe_add_all(n_formaldefs)
+ _n_cbra = n_cbra
+ if n_cbra != null then n_cbra.parent = self
_n_extern_code_block = n_extern_code_block
if n_extern_code_block != null then n_extern_code_block.parent = self
self.n_propdefs.unsafe_add_all(n_propdefs)
n_id = new_child.as(nullable TClassid)
return
end
+ if _n_obra == old_child then
+ n_obra = new_child.as(nullable TObra)
+ return
+ end
if n_formaldefs.replace_child(old_child, new_child) then return
+ if _n_cbra == old_child then
+ n_cbra = new_child.as(nullable TCbra)
+ return
+ end
if _n_extern_code_block == old_child then
n_extern_code_block = new_child.as(nullable AExternCodeBlock)
return
_n_id = node
if node != null then node.parent = self
end
+ redef fun n_obra=(node)
+ do
+ _n_obra = node
+ if node != null then node.parent = self
+ end
+ redef fun n_cbra=(node)
+ do
+ _n_cbra = node
+ if node != null then node.parent = self
+ end
redef fun n_extern_code_block=(node)
do
_n_extern_code_block = node
v.enter_visit(_n_visibility)
v.enter_visit(_n_classkind)
v.enter_visit(_n_id)
+ v.enter_visit(_n_obra)
n_formaldefs.visit_all(v)
+ v.enter_visit(_n_cbra)
v.enter_visit(_n_extern_code_block)
n_propdefs.visit_all(v)
v.enter_visit(_n_kwend)
n_kwvar: nullable TKwvar,
n_id2: nullable TId,
n_type: nullable AType,
+ n_assign: nullable TAssign,
n_expr: nullable AExpr,
n_annotations: nullable AAnnotations,
- n_block: nullable AExpr
+ n_kwdo: nullable TKwdo,
+ n_block: nullable AExpr,
+ n_kwend: nullable TKwend
)
do
_n_doc = n_doc
n_id2.parent = self
_n_type = n_type
if n_type != null then n_type.parent = self
+ _n_assign = n_assign
+ if n_assign != null then n_assign.parent = self
_n_expr = n_expr
if n_expr != null then n_expr.parent = self
_n_annotations = n_annotations
if n_annotations != null then n_annotations.parent = self
+ _n_kwdo = n_kwdo
+ if n_kwdo != null then n_kwdo.parent = self
_n_block = n_block
if n_block != null then n_block.parent = self
+ _n_kwend = n_kwend
+ if n_kwend != null then n_kwend.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
n_type = new_child.as(nullable AType)
return
end
+ if _n_assign == old_child then
+ n_assign = new_child.as(nullable TAssign)
+ return
+ end
if _n_expr == old_child then
n_expr = new_child.as(nullable AExpr)
return
n_annotations = new_child.as(nullable AAnnotations)
return
end
+ if _n_kwdo == old_child then
+ n_kwdo = new_child.as(nullable TKwdo)
+ return
+ end
if _n_block == old_child then
n_block = new_child.as(nullable AExpr)
return
end
+ if _n_kwend == old_child then
+ n_kwend = new_child.as(nullable TKwend)
+ return
+ end
end
redef fun n_doc=(node)
_n_type = node
if node != null then node.parent = self
end
+ redef fun n_assign=(node)
+ do
+ _n_assign = node
+ if node != null then node.parent = self
+ end
redef fun n_expr=(node)
do
_n_expr = node
_n_annotations = node
if node != null then node.parent = self
end
+ redef fun n_kwdo=(node)
+ do
+ _n_kwdo = node
+ if node != null then node.parent = self
+ end
redef fun n_block=(node)
do
_n_block = node
if node != null then node.parent = self
end
+ redef fun n_kwend=(node)
+ do
+ _n_kwend = node
+ if node != null then node.parent = self
+ end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_kwvar)
v.enter_visit(_n_id2)
v.enter_visit(_n_type)
+ v.enter_visit(_n_assign)
v.enter_visit(_n_expr)
v.enter_visit(_n_annotations)
+ v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
+ v.enter_visit(_n_kwend)
end
end
redef class AMainMethPropdef
n_annotations: nullable AAnnotations,
n_extern_calls: nullable AExternCalls,
n_extern_code_block: nullable AExternCodeBlock,
- n_block: nullable AExpr
+ n_kwdo: nullable TKwdo,
+ n_block: nullable AExpr,
+ n_kwend: nullable TKwend
)
do
_n_doc = n_doc
if n_extern_calls != null then n_extern_calls.parent = self
_n_extern_code_block = n_extern_code_block
if n_extern_code_block != null then n_extern_code_block.parent = self
+ _n_kwdo = n_kwdo
+ if n_kwdo != null then n_kwdo.parent = self
_n_block = n_block
if n_block != null then n_block.parent = self
+ _n_kwend = n_kwend
+ if n_kwend != null then n_kwend.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
n_extern_code_block = new_child.as(nullable AExternCodeBlock)
return
end
+ if _n_kwdo == old_child then
+ n_kwdo = new_child.as(nullable TKwdo)
+ return
+ end
if _n_block == old_child then
n_block = new_child.as(nullable AExpr)
return
end
+ if _n_kwend == old_child then
+ n_kwend = new_child.as(nullable TKwend)
+ return
+ end
end
redef fun n_doc=(node)
_n_extern_code_block = node
if node != null then node.parent = self
end
+ redef fun n_kwdo=(node)
+ do
+ _n_kwdo = node
+ if node != null then node.parent = self
+ end
redef fun n_block=(node)
do
_n_block = node
if node != null then node.parent = self
end
+ redef fun n_kwend=(node)
+ do
+ _n_kwend = node
+ if node != null then node.parent = self
+ end
redef fun visit_all(v: Visitor)
v.enter_visit(_n_annotations)
v.enter_visit(_n_extern_calls)
v.enter_visit(_n_extern_code_block)
+ v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
+ v.enter_visit(_n_kwend)
end
end
redef class ASuperPropdef
end
redef class APlusMethid
init init_aplusmethid (
- n_plus: nullable TPlus
+ n_op: nullable TPlus
)
do
- _n_plus = n_plus.as(not null)
- n_plus.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_plus == old_child then
- n_plus = new_child.as(TPlus)
+ if _n_op == old_child then
+ n_op = new_child.as(TPlus)
return
end
end
- redef fun n_plus=(node)
+ redef fun n_op=(node)
do
- _n_plus = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_plus)
+ v.enter_visit(_n_op)
end
end
redef class AMinusMethid
init init_aminusmethid (
- n_minus: nullable TMinus
+ n_op: nullable TMinus
)
do
- _n_minus = n_minus.as(not null)
- n_minus.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_minus == old_child then
- n_minus = new_child.as(TMinus)
+ if _n_op == old_child then
+ n_op = new_child.as(TMinus)
return
end
end
- redef fun n_minus=(node)
+ redef fun n_op=(node)
do
- _n_minus = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_minus)
+ v.enter_visit(_n_op)
end
end
redef class AStarMethid
init init_astarmethid (
- n_star: nullable TStar
+ n_op: nullable TStar
)
do
- _n_star = n_star.as(not null)
- n_star.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_star == old_child then
- n_star = new_child.as(TStar)
+ if _n_op == old_child then
+ n_op = new_child.as(TStar)
return
end
end
- redef fun n_star=(node)
+ redef fun n_op=(node)
do
- _n_star = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_star)
+ v.enter_visit(_n_op)
end
end
redef class AStarstarMethid
init init_astarstarmethid (
- n_starstar: nullable TStarstar
+ n_op: nullable TStarstar
)
do
- _n_starstar = n_starstar.as(not null)
- n_starstar.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_starstar == old_child then
- n_starstar = new_child.as(TStarstar)
+ if _n_op == old_child then
+ n_op = new_child.as(TStarstar)
return
end
end
- redef fun n_starstar=(node)
+ redef fun n_op=(node)
do
- _n_starstar = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_starstar)
+ v.enter_visit(_n_op)
end
end
redef class ASlashMethid
init init_aslashmethid (
- n_slash: nullable TSlash
+ n_op: nullable TSlash
)
do
- _n_slash = n_slash.as(not null)
- n_slash.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_slash == old_child then
- n_slash = new_child.as(TSlash)
+ if _n_op == old_child then
+ n_op = new_child.as(TSlash)
return
end
end
- redef fun n_slash=(node)
+ redef fun n_op=(node)
do
- _n_slash = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_slash)
+ v.enter_visit(_n_op)
end
end
redef class APercentMethid
init init_apercentmethid (
- n_percent: nullable TPercent
+ n_op: nullable TPercent
)
do
- _n_percent = n_percent.as(not null)
- n_percent.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_percent == old_child then
- n_percent = new_child.as(TPercent)
+ if _n_op == old_child then
+ n_op = new_child.as(TPercent)
return
end
end
- redef fun n_percent=(node)
+ redef fun n_op=(node)
do
- _n_percent = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_percent)
+ v.enter_visit(_n_op)
end
end
redef class AEqMethid
init init_aeqmethid (
- n_eq: nullable TEq
+ n_op: nullable TEq
)
do
- _n_eq = n_eq.as(not null)
- n_eq.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_eq == old_child then
- n_eq = new_child.as(TEq)
+ if _n_op == old_child then
+ n_op = new_child.as(TEq)
return
end
end
- redef fun n_eq=(node)
+ redef fun n_op=(node)
do
- _n_eq = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_eq)
+ v.enter_visit(_n_op)
end
end
redef class ANeMethid
init init_anemethid (
- n_ne: nullable TNe
+ n_op: nullable TNe
)
do
- _n_ne = n_ne.as(not null)
- n_ne.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_ne == old_child then
- n_ne = new_child.as(TNe)
+ if _n_op == old_child then
+ n_op = new_child.as(TNe)
return
end
end
- redef fun n_ne=(node)
+ redef fun n_op=(node)
do
- _n_ne = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_ne)
+ v.enter_visit(_n_op)
end
end
redef class ALeMethid
init init_alemethid (
- n_le: nullable TLe
+ n_op: nullable TLe
)
do
- _n_le = n_le.as(not null)
- n_le.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_le == old_child then
- n_le = new_child.as(TLe)
+ if _n_op == old_child then
+ n_op = new_child.as(TLe)
return
end
end
- redef fun n_le=(node)
+ redef fun n_op=(node)
do
- _n_le = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_le)
+ v.enter_visit(_n_op)
end
end
redef class AGeMethid
init init_agemethid (
- n_ge: nullable TGe
+ n_op: nullable TGe
)
do
- _n_ge = n_ge.as(not null)
- n_ge.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_ge == old_child then
- n_ge = new_child.as(TGe)
+ if _n_op == old_child then
+ n_op = new_child.as(TGe)
return
end
end
- redef fun n_ge=(node)
+ redef fun n_op=(node)
do
- _n_ge = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_ge)
+ v.enter_visit(_n_op)
end
end
redef class ALtMethid
init init_altmethid (
- n_lt: nullable TLt
+ n_op: nullable TLt
)
do
- _n_lt = n_lt.as(not null)
- n_lt.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_lt == old_child then
- n_lt = new_child.as(TLt)
+ if _n_op == old_child then
+ n_op = new_child.as(TLt)
return
end
end
- redef fun n_lt=(node)
+ redef fun n_op=(node)
do
- _n_lt = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_lt)
+ v.enter_visit(_n_op)
end
end
redef class AGtMethid
init init_agtmethid (
- n_gt: nullable TGt
+ n_op: nullable TGt
)
do
- _n_gt = n_gt.as(not null)
- n_gt.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_gt == old_child then
- n_gt = new_child.as(TGt)
+ if _n_op == old_child then
+ n_op = new_child.as(TGt)
return
end
end
- redef fun n_gt=(node)
+ redef fun n_op=(node)
do
- _n_gt = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_gt)
+ v.enter_visit(_n_op)
end
end
redef class ALlMethid
init init_allmethid (
- n_ll: nullable TLl
+ n_op: nullable TLl
)
do
- _n_ll = n_ll.as(not null)
- n_ll.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_ll == old_child then
- n_ll = new_child.as(TLl)
+ if _n_op == old_child then
+ n_op = new_child.as(TLl)
return
end
end
- redef fun n_ll=(node)
+ redef fun n_op=(node)
do
- _n_ll = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_ll)
+ v.enter_visit(_n_op)
end
end
redef class AGgMethid
init init_aggmethid (
- n_gg: nullable TGg
+ n_op: nullable TGg
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TGg)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AStarshipMethid
+ init init_astarshipmethid (
+ n_op: nullable TStarship
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TStarship)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class APipeMethid
+ init init_apipemethid (
+ n_op: nullable TPipe
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TPipe)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class ACaretMethid
+ init init_acaretmethid (
+ n_op: nullable TCaret
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TCaret)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AAmpMethid
+ init init_aampmethid (
+ n_op: nullable TAmp
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TAmp)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class ATildeMethid
+ init init_atildemethid (
+ n_op: nullable TTilde
)
do
- _n_gg = n_gg.as(not null)
- n_gg.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
- if _n_gg == old_child then
- n_gg = new_child.as(TGg)
+ if _n_op == old_child then
+ n_op = new_child.as(TTilde)
return
end
end
- redef fun n_gg=(node)
+ redef fun n_op=(node)
do
- _n_gg = node
+ _n_op = node
node.parent = self
end
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_gg)
+ v.enter_visit(_n_op)
end
end
redef class ABraMethid
v.enter_visit(_n_cbra)
end
end
-redef class AStarshipMethid
- init init_astarshipmethid (
- n_starship: nullable TStarship
- )
- do
- _n_starship = n_starship.as(not null)
- n_starship.parent = self
- end
-
- redef fun replace_child(old_child: ANode, new_child: nullable ANode)
- do
- if _n_starship == old_child then
- n_starship = new_child.as(TStarship)
- return
- end
- end
-
- redef fun n_starship=(node)
- do
- _n_starship = node
- node.parent = self
- end
-
-
- redef fun visit_all(v: Visitor)
- do
- v.enter_visit(_n_starship)
- end
-end
redef class AAssignMethid
init init_aassignmethid (
n_id: nullable TId,
init init_atype (
n_kwnullable: nullable TKwnullable,
n_id: nullable TClassid,
+ n_obra: nullable TObra,
n_types: Collection[Object], # Should be Collection[AType]
+ n_cbra: nullable TCbra,
n_annotations: nullable AAnnotations
)
do
if n_kwnullable != null then n_kwnullable.parent = self
_n_id = n_id.as(not null)
n_id.parent = self
+ _n_obra = n_obra
+ if n_obra != null then n_obra.parent = self
self.n_types.unsafe_add_all(n_types)
+ _n_cbra = n_cbra
+ if n_cbra != null then n_cbra.parent = self
_n_annotations = n_annotations
if n_annotations != null then n_annotations.parent = self
end
n_id = new_child.as(TClassid)
return
end
+ if _n_obra == old_child then
+ n_obra = new_child.as(nullable TObra)
+ return
+ end
if n_types.replace_child(old_child, new_child) then return
+ if _n_cbra == old_child then
+ n_cbra = new_child.as(nullable TCbra)
+ return
+ end
if _n_annotations == old_child then
n_annotations = new_child.as(nullable AAnnotations)
return
_n_id = node
node.parent = self
end
+ redef fun n_obra=(node)
+ do
+ _n_obra = node
+ if node != null then node.parent = self
+ end
+ redef fun n_cbra=(node)
+ do
+ _n_cbra = node
+ if node != null then node.parent = self
+ end
redef fun n_annotations=(node)
do
_n_annotations = node
do
v.enter_visit(_n_kwnullable)
v.enter_visit(_n_id)
+ v.enter_visit(_n_obra)
n_types.visit_all(v)
+ v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
end
end
init init_aifexpr (
n_kwif: nullable TKwif,
n_expr: nullable AExpr,
+ n_kwthen: nullable TKwthen,
n_then: nullable AExpr,
+ n_kwelse: nullable TKwelse,
n_else: nullable AExpr
)
do
n_kwif.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_kwthen = n_kwthen.as(not null)
+ n_kwthen.parent = self
_n_then = n_then
if n_then != null then n_then.parent = self
+ _n_kwelse = n_kwelse
+ if n_kwelse != null then n_kwelse.parent = self
_n_else = n_else
if n_else != null then n_else.parent = self
end
n_expr = new_child.as(AExpr)
return
end
+ if _n_kwthen == old_child then
+ n_kwthen = new_child.as(TKwthen)
+ return
+ end
if _n_then == old_child then
n_then = new_child.as(nullable AExpr)
return
end
+ if _n_kwelse == old_child then
+ n_kwelse = new_child.as(nullable TKwelse)
+ return
+ end
if _n_else == old_child then
n_else = new_child.as(nullable AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_kwthen=(node)
+ do
+ _n_kwthen = node
+ node.parent = self
+ end
redef fun n_then=(node)
do
_n_then = node
if node != null then node.parent = self
end
+ redef fun n_kwelse=(node)
+ do
+ _n_kwelse = node
+ if node != null then node.parent = self
+ end
redef fun n_else=(node)
do
_n_else = node
do
v.enter_visit(_n_kwif)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_kwthen)
v.enter_visit(_n_then)
+ v.enter_visit(_n_kwelse)
v.enter_visit(_n_else)
end
end
init init_aforexpr (
n_kwfor: nullable TKwfor,
n_ids: Collection[Object], # Should be Collection[TId]
+ n_kwin: nullable TKwin,
n_expr: nullable AExpr,
n_kwdo: nullable TKwdo,
n_block: nullable AExpr,
_n_kwfor = n_kwfor.as(not null)
n_kwfor.parent = self
self.n_ids.unsafe_add_all(n_ids)
+ _n_kwin = n_kwin.as(not null)
+ n_kwin.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
_n_kwdo = n_kwdo.as(not null)
return
end
if n_ids.replace_child(old_child, new_child) then return
+ if _n_kwin == old_child then
+ n_kwin = new_child.as(TKwin)
+ return
+ end
if _n_expr == old_child then
n_expr = new_child.as(AExpr)
return
_n_kwfor = node
node.parent = self
end
+ redef fun n_kwin=(node)
+ do
+ _n_kwin = node
+ node.parent = self
+ end
redef fun n_expr=(node)
do
_n_expr = node
do
v.enter_visit(_n_kwfor)
n_ids.visit_all(v)
+ v.enter_visit(_n_kwin)
v.enter_visit(_n_expr)
v.enter_visit(_n_kwdo)
v.enter_visit(_n_block)
n_kwassert: nullable TKwassert,
n_id: nullable TId,
n_expr: nullable AExpr,
+ n_kwelse: nullable TKwelse,
n_else: nullable AExpr
)
do
if n_id != null then n_id.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_kwelse = n_kwelse
+ if n_kwelse != null then n_kwelse.parent = self
_n_else = n_else
if n_else != null then n_else.parent = self
end
n_expr = new_child.as(AExpr)
return
end
+ if _n_kwelse == old_child then
+ n_kwelse = new_child.as(nullable TKwelse)
+ return
+ end
if _n_else == old_child then
n_else = new_child.as(nullable AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_kwelse=(node)
+ do
+ _n_kwelse = node
+ if node != null then node.parent = self
+ end
redef fun n_else=(node)
do
_n_else = node
v.enter_visit(_n_kwassert)
v.enter_visit(_n_id)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_kwelse)
v.enter_visit(_n_else)
end
end
v.enter_visit(_n_type)
end
end
-redef class APlusExpr
- init init_aplusexpr (
+redef class APlusExpr
+ init init_aplusexpr (
+ n_expr: nullable AExpr,
+ n_op: nullable TPlus,
+ n_expr2: nullable AExpr
+ )
+ do
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ _n_expr2 = n_expr2.as(not null)
+ n_expr2.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_op == old_child then
+ n_op = new_child.as(TPlus)
+ return
+ end
+ if _n_expr2 == old_child then
+ n_expr2 = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+ redef fun n_expr2=(node)
+ do
+ _n_expr2 = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_op)
+ v.enter_visit(_n_expr2)
+ end
+end
+redef class AMinusExpr
+ init init_aminusexpr (
+ n_expr: nullable AExpr,
+ n_op: nullable TMinus,
+ n_expr2: nullable AExpr
+ )
+ do
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ _n_expr2 = n_expr2.as(not null)
+ n_expr2.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_op == old_child then
+ n_op = new_child.as(TMinus)
+ return
+ end
+ if _n_expr2 == old_child then
+ n_expr2 = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+ redef fun n_expr2=(node)
+ do
+ _n_expr2 = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_op)
+ v.enter_visit(_n_expr2)
+ end
+end
+redef class AStarshipExpr
+ init init_astarshipexpr (
+ n_expr: nullable AExpr,
+ n_op: nullable TStarship,
+ n_expr2: nullable AExpr
+ )
+ do
+ _n_expr = n_expr.as(not null)
+ n_expr.parent = self
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ _n_expr2 = n_expr2.as(not null)
+ n_expr2.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_op == old_child then
+ n_op = new_child.as(TStarship)
+ return
+ end
+ if _n_expr2 == old_child then
+ n_expr2 = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_expr=(node)
+ do
+ _n_expr = node
+ node.parent = self
+ end
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+ redef fun n_expr2=(node)
+ do
+ _n_expr2 = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_expr)
+ v.enter_visit(_n_op)
+ v.enter_visit(_n_expr2)
+ end
+end
+redef class AStarExpr
+ init init_astarexpr (
n_expr: nullable AExpr,
- n_op: nullable TPlus,
+ n_op: nullable TStar,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TPlus)
+ n_op = new_child.as(TStar)
return
end
if _n_expr2 == old_child then
v.enter_visit(_n_expr2)
end
end
-redef class AMinusExpr
- init init_aminusexpr (
+redef class AStarstarExpr
+ init init_astarstarexpr (
n_expr: nullable AExpr,
- n_op: nullable TMinus,
+ n_op: nullable TStarstar,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TMinus)
+ n_op = new_child.as(TStarstar)
return
end
if _n_expr2 == old_child then
v.enter_visit(_n_expr2)
end
end
-redef class AStarshipExpr
- init init_astarshipexpr (
+redef class ASlashExpr
+ init init_aslashexpr (
n_expr: nullable AExpr,
- n_op: nullable TStarship,
+ n_op: nullable TSlash,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TStarship)
+ n_op = new_child.as(TSlash)
return
end
if _n_expr2 == old_child then
v.enter_visit(_n_expr2)
end
end
-redef class AStarExpr
- init init_astarexpr (
+redef class APercentExpr
+ init init_apercentexpr (
n_expr: nullable AExpr,
- n_op: nullable TStar,
+ n_op: nullable TPercent,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TStar)
+ n_op = new_child.as(TPercent)
return
end
if _n_expr2 == old_child then
v.enter_visit(_n_expr2)
end
end
-redef class AStarstarExpr
- init init_astarstarexpr (
+redef class APipeExpr
+ init init_apipeexpr (
n_expr: nullable AExpr,
- n_op: nullable TStarstar,
+ n_op: nullable TPipe,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TStarstar)
+ n_op = new_child.as(TPipe)
return
end
if _n_expr2 == old_child then
v.enter_visit(_n_expr2)
end
end
-redef class ASlashExpr
- init init_aslashexpr (
+redef class ACaretExpr
+ init init_acaretexpr (
n_expr: nullable AExpr,
- n_op: nullable TSlash,
+ n_op: nullable TCaret,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TSlash)
+ n_op = new_child.as(TCaret)
return
end
if _n_expr2 == old_child then
v.enter_visit(_n_expr2)
end
end
-redef class APercentExpr
- init init_apercentexpr (
+redef class AAmpExpr
+ init init_aampexpr (
n_expr: nullable AExpr,
- n_op: nullable TPercent,
+ n_op: nullable TAmp,
n_expr2: nullable AExpr
)
do
return
end
if _n_op == old_child then
- n_op = new_child.as(TPercent)
+ n_op = new_child.as(TAmp)
return
end
if _n_expr2 == old_child then
end
redef class AUminusExpr
init init_auminusexpr (
- n_minus: nullable TMinus,
+ n_op: nullable TMinus,
n_expr: nullable AExpr
)
do
- _n_minus = n_minus.as(not null)
- n_minus.parent = self
+ _n_op = n_op.as(not null)
+ n_op.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_minus == old_child then
- n_minus = new_child.as(TMinus)
+ if _n_op == old_child then
+ n_op = new_child.as(TMinus)
return
end
if _n_expr == old_child then
end
end
- redef fun n_minus=(node)
+ redef fun n_op=(node)
do
- _n_minus = node
+ _n_op = node
node.parent = self
end
redef fun n_expr=(node)
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_minus)
+ v.enter_visit(_n_op)
v.enter_visit(_n_expr)
end
end
redef class AUplusExpr
init init_auplusexpr (
- n_plus: nullable TPlus,
+ n_op: nullable TPlus,
+ n_expr: nullable AExpr
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.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_op == old_child then
+ n_op = new_child.as(TPlus)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = 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_op)
+ v.enter_visit(_n_expr)
+ end
+end
+redef class AUtildeExpr
+ init init_autildeexpr (
+ n_op: nullable TTilde,
n_expr: nullable AExpr
)
do
- _n_plus = n_plus.as(not null)
- n_plus.parent = self
+ _n_op = n_op.as(not null)
+ n_op.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_plus == old_child then
- n_plus = new_child.as(TPlus)
+ if _n_op == old_child then
+ n_op = new_child.as(TTilde)
return
end
if _n_expr == old_child then
end
end
- redef fun n_plus=(node)
+ redef fun n_op=(node)
do
- _n_plus = node
+ _n_op = node
node.parent = self
end
redef fun n_expr=(node)
redef fun visit_all(v: Visitor)
do
- v.enter_visit(_n_plus)
+ v.enter_visit(_n_op)
v.enter_visit(_n_expr)
end
end
init init_acrangeexpr (
n_obra: nullable TObra,
n_expr: nullable AExpr,
+ n_dotdot: nullable TDotdot,
n_expr2: nullable AExpr,
n_cbra: nullable TCbra,
n_annotations: nullable AAnnotations
n_obra.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_dotdot = n_dotdot.as(not null)
+ n_dotdot.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
_n_cbra = n_cbra.as(not null)
n_expr = new_child.as(AExpr)
return
end
+ if _n_dotdot == old_child then
+ n_dotdot = new_child.as(TDotdot)
+ return
+ end
if _n_expr2 == old_child then
n_expr2 = new_child.as(AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_dotdot=(node)
+ do
+ _n_dotdot = node
+ node.parent = self
+ end
redef fun n_expr2=(node)
do
_n_expr2 = node
do
v.enter_visit(_n_obra)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_dotdot)
v.enter_visit(_n_expr2)
v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
init init_aorangeexpr (
n_obra: nullable TObra,
n_expr: nullable AExpr,
+ n_dotdot: nullable TDotdot,
n_expr2: nullable AExpr,
n_cbra: nullable TObra,
n_annotations: nullable AAnnotations
n_obra.parent = self
_n_expr = n_expr.as(not null)
n_expr.parent = self
+ _n_dotdot = n_dotdot.as(not null)
+ n_dotdot.parent = self
_n_expr2 = n_expr2.as(not null)
n_expr2.parent = self
_n_cbra = n_cbra.as(not null)
n_expr = new_child.as(AExpr)
return
end
+ if _n_dotdot == old_child then
+ n_dotdot = new_child.as(TDotdot)
+ return
+ end
if _n_expr2 == old_child then
n_expr2 = new_child.as(AExpr)
return
_n_expr = node
node.parent = self
end
+ redef fun n_dotdot=(node)
+ do
+ _n_dotdot = node
+ node.parent = self
+ end
redef fun n_expr2=(node)
do
_n_expr2 = node
do
v.enter_visit(_n_obra)
v.enter_visit(_n_expr)
+ v.enter_visit(_n_dotdot)
v.enter_visit(_n_expr2)
v.enter_visit(_n_cbra)
v.enter_visit(_n_annotations)
v.enter_visit(_n_dotdotdot)
end
end
+redef class ANamedargExpr
+ init init_anamedargexpr (
+ n_id: nullable TId,
+ n_assign: nullable TAssign,
+ n_expr: nullable AExpr
+ )
+ do
+ _n_id = n_id.as(not null)
+ n_id.parent = self
+ _n_assign = n_assign.as(not null)
+ n_assign.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_id == old_child then
+ n_id = new_child.as(TId)
+ return
+ end
+ if _n_assign == old_child then
+ n_assign = new_child.as(TAssign)
+ return
+ end
+ if _n_expr == old_child then
+ n_expr = new_child.as(AExpr)
+ return
+ end
+ end
+
+ redef fun n_id=(node)
+ do
+ _n_id = node
+ node.parent = self
+ end
+ redef fun n_assign=(node)
+ do
+ _n_assign = 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_id)
+ v.enter_visit(_n_assign)
+ v.enter_visit(_n_expr)
+ end
+end
redef class ATypeExpr
init init_atypeexpr (
n_type: nullable AType
v.enter_visit(_n_op)
end
end
+redef class APipeAssignOp
+ init init_apipeassignop (
+ n_op: nullable TPipeeq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TPipeeq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class ACaretAssignOp
+ init init_acaretassignop (
+ n_op: nullable TCareteq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TCareteq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
+redef class AAmpAssignOp
+ init init_aampassignop (
+ n_op: nullable TAmpeq
+ )
+ do
+ _n_op = n_op.as(not null)
+ n_op.parent = self
+ end
+
+ redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+ do
+ if _n_op == old_child then
+ n_op = new_child.as(TAmpeq)
+ return
+ end
+ end
+
+ redef fun n_op=(node)
+ do
+ _n_op = node
+ node.parent = self
+ end
+
+
+ redef fun visit_all(v: Visitor)
+ do
+ v.enter_visit(_n_op)
+ end
+end
redef class ALlAssignOp
init init_allassignop (
n_op: nullable TLleq
end
redef class AAnnotations
init init_aannotations (
+ n_kwis: nullable TKwis,
n_at: nullable TAt,
n_opar: nullable TOpar,
n_items: Collection[Object], # Should be Collection[AAnnotation]
- n_cpar: nullable TCpar
+ n_cpar: nullable TCpar,
+ n_kwend: nullable TKwend
)
do
+ _n_kwis = n_kwis
+ if n_kwis != null then n_kwis.parent = self
_n_at = n_at
if n_at != null then n_at.parent = self
_n_opar = n_opar
self.n_items.unsafe_add_all(n_items)
_n_cpar = n_cpar
if n_cpar != null then n_cpar.parent = self
+ _n_kwend = n_kwend
+ if n_kwend != null then n_kwend.parent = self
end
redef fun replace_child(old_child: ANode, new_child: nullable ANode)
do
+ if _n_kwis == old_child then
+ n_kwis = new_child.as(nullable TKwis)
+ return
+ end
if _n_at == old_child then
n_at = new_child.as(nullable TAt)
return
n_cpar = new_child.as(nullable TCpar)
return
end
+ if _n_kwend == old_child then
+ n_kwend = new_child.as(nullable TKwend)
+ return
+ end
end
+ redef fun n_kwis=(node)
+ do
+ _n_kwis = node
+ if node != null then node.parent = self
+ end
redef fun n_at=(node)
do
_n_at = node
_n_cpar = node
if node != null then node.parent = self
end
+ redef fun n_kwend=(node)
+ do
+ _n_kwend = node
+ if node != null then node.parent = self
+ end
redef fun visit_all(v: Visitor)
do
+ v.enter_visit(_n_kwis)
v.enter_visit(_n_at)
v.enter_visit(_n_opar)
n_items.visit_all(v)
v.enter_visit(_n_cpar)
+ v.enter_visit(_n_kwend)
end
end
redef class AAnnotation
#include "tables_nit.h"
static const int lexer_goto_row1[] = {
- 52,
+ 57,
9, 9, 1,
10, 10, 2,
13, 13, 3,
34, 34, 6,
35, 35, 7,
37, 37, 8,
- 39, 39, 9,
- 40, 40, 10,
- 41, 41, 11,
- 42, 42, 12,
- 43, 43, 13,
- 44, 44, 14,
- 45, 45, 15,
- 46, 46, 16,
- 47, 47, 17,
- 48, 48, 18,
- 49, 57, 19,
- 58, 58, 20,
- 60, 60, 21,
- 61, 61, 22,
- 62, 62, 23,
- 64, 64, 24,
- 65, 90, 25,
- 91, 91, 26,
- 93, 93, 27,
- 95, 95, 28,
- 96, 96, 29,
- 97, 97, 30,
- 98, 98, 31,
- 99, 99, 32,
- 100, 100, 33,
- 101, 101, 34,
- 102, 102, 35,
- 103, 104, 36,
- 105, 105, 37,
- 106, 107, 36,
- 108, 108, 38,
- 109, 109, 39,
- 110, 110, 40,
- 111, 111, 41,
- 112, 112, 42,
- 113, 113, 36,
- 114, 114, 43,
- 115, 115, 44,
- 116, 116, 45,
- 117, 117, 46,
- 118, 118, 47,
- 119, 119, 48,
- 120, 122, 36,
- 125, 125, 49
+ 38, 38, 9,
+ 39, 39, 10,
+ 40, 40, 11,
+ 41, 41, 12,
+ 42, 42, 13,
+ 43, 43, 14,
+ 44, 44, 15,
+ 45, 45, 16,
+ 46, 46, 17,
+ 47, 47, 18,
+ 48, 48, 19,
+ 49, 57, 20,
+ 58, 58, 21,
+ 59, 59, 22,
+ 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, 122, 39,
+ 124, 124, 52,
+ 125, 125, 53,
+ 126, 126, 54
};
static const int lexer_goto_row2[] = {
2,
};
static const int lexer_goto_row4[] = {
1,
- 10, 10, 50
+ 10, 10, 55
};
static const int lexer_goto_row5[] = {
1,
};
static const int lexer_goto_row6[] = {
1,
- 61, 61, 51
+ 61, 61, 56
};
static const int lexer_goto_row7[] = {
9,
- 0, 9, 52,
- 11, 12, 52,
- 14, 33, 52,
- 34, 34, 53,
- 35, 91, 52,
- 92, 92, 54,
- 93, 122, 52,
- 123, 123, 55,
- 124, 255, 52
+ 0, 9, 57,
+ 11, 12, 57,
+ 14, 33, 57,
+ 34, 34, 58,
+ 35, 91, 57,
+ 92, 92, 59,
+ 93, 122, 57,
+ 123, 123, 60,
+ 124, 255, 57
};
static const int lexer_goto_row8[] = {
5,
- 0, 9, 56,
- 10, 10, 57,
- 11, 12, 56,
- 13, 13, 58,
- 14, 255, 56
+ 0, 9, 61,
+ 10, 10, 62,
+ 11, 12, 61,
+ 13, 13, 63,
+ 14, 255, 61
};
static const int lexer_goto_row9[] = {
1,
- 61, 61, 59
+ 61, 61, 64
};
static const int lexer_goto_row10[] = {
- 7,
- 0, 9, 60,
- 11, 12, 60,
- 14, 38, 60,
- 39, 39, 61,
- 40, 91, 60,
- 92, 92, 62,
- 93, 255, 60
+ 1,
+ 61, 61, 65
};
-static const int lexer_goto_row13[] = {
- 2,
- 42, 42, 63,
- 61, 61, 64
+static const int lexer_goto_row11[] = {
+ 7,
+ 0, 9, 66,
+ 11, 12, 66,
+ 14, 38, 66,
+ 39, 39, 67,
+ 40, 91, 66,
+ 92, 92, 68,
+ 93, 255, 66
};
static const int lexer_goto_row14[] = {
- 1,
- 61, 61, 65
+ 2,
+ 42, 42, 69,
+ 61, 61, 70
};
-static const int lexer_goto_row16[] = {
+static const int lexer_goto_row15[] = {
1,
- 61, 61, 66
+ 61, 61, 71
};
static const int lexer_goto_row17[] = {
- 2,
- 46, 46, 67,
- 48, 57, 68
+ 1,
+ 61, 61, 72
};
static const int lexer_goto_row18[] = {
- 1,
- 61, 61, 69
+ 2,
+ 46, 46, 73,
+ 48, 57, 74
};
static const int lexer_goto_row19[] = {
- 4,
- 46, 46, 70,
- 48, 57, 19,
- 88, 88, 71,
- 120, 120, 72
+ 1,
+ 61, 61, 75
};
static const int lexer_goto_row20[] = {
- 1,
- 46, 57, -20
+ 4,
+ 46, 46, 76,
+ 48, 57, 20,
+ 88, 88, 77,
+ 120, 120, 78
};
static const int lexer_goto_row21[] = {
1,
- 58, 58, 73
+ 46, 57, -21
};
static const int lexer_goto_row22[] = {
- 2,
- 60, 60, 74,
- 61, 61, 75
-};
-static const int lexer_goto_row23[] = {
1,
- 61, 61, 76
+ 58, 58, 79
};
static const int lexer_goto_row24[] = {
2,
- 61, 61, 77,
- 62, 62, 78
+ 60, 60, 80,
+ 61, 61, 81
};
-static const int lexer_goto_row26[] = {
- 4,
- 48, 57, 79,
- 65, 90, 80,
- 95, 95, 81,
- 97, 122, 82
+static const int lexer_goto_row25[] = {
+ 1,
+ 61, 61, 82
};
-static const int lexer_goto_row29[] = {
+static const int lexer_goto_row26[] = {
2,
- 95, 95, 83,
- 97, 122, 84
+ 61, 61, 83,
+ 62, 62, 84
};
-static const int lexer_goto_row30[] = {
- 1,
- 123, 123, 85
+static const int lexer_goto_row28[] = {
+ 4,
+ 48, 57, 85,
+ 65, 90, 86,
+ 95, 95, 87,
+ 97, 122, 88
};
static const int lexer_goto_row31[] = {
- 10,
- 48, 57, 86,
- 65, 90, 87,
- 95, 95, 88,
- 97, 97, 89,
- 98, 98, 90,
- 99, 109, 89,
- 110, 110, 91,
- 111, 114, 89,
- 115, 115, 92,
- 116, 122, 89
+ 1,
+ 61, 61, 89
};
static const int lexer_goto_row32[] = {
- 4,
- 48, 95, -32,
- 97, 113, 89,
- 114, 114, 93,
- 115, 122, 89
+ 2,
+ 95, 95, 90,
+ 97, 122, 91
};
static const int lexer_goto_row33[] = {
- 6,
- 48, 95, -32,
- 97, 107, 89,
- 108, 108, 94,
- 109, 110, 89,
- 111, 111, 95,
- 112, 122, 89
+ 1,
+ 123, 123, 92
};
static const int lexer_goto_row34[] = {
- 4,
- 48, 95, -32,
- 97, 110, 89,
- 111, 111, 96,
- 112, 122, 89
+ 10,
+ 48, 57, 93,
+ 65, 90, 94,
+ 95, 95, 95,
+ 97, 97, 96,
+ 98, 98, 97,
+ 99, 109, 96,
+ 110, 110, 98,
+ 111, 114, 96,
+ 115, 115, 99,
+ 116, 122, 96
};
static const int lexer_goto_row35[] = {
- 7,
- 48, 107, -34,
- 108, 108, 97,
- 109, 109, 89,
- 110, 110, 98,
- 111, 119, 89,
- 120, 120, 99,
- 121, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 113, 96,
+ 114, 114, 100,
+ 115, 122, 96
};
static const int lexer_goto_row36[] = {
- 7,
- 48, 95, -32,
- 97, 97, 100,
- 98, 110, 89,
- 111, 111, 101,
- 112, 116, 89,
- 117, 117, 102,
- 118, 122, 89
+ 6,
+ 48, 95, -35,
+ 97, 107, 96,
+ 108, 108, 101,
+ 109, 110, 96,
+ 111, 111, 102,
+ 112, 122, 96
};
static const int lexer_goto_row37[] = {
- 2,
- 48, 95, -32,
- 97, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 110, 96,
+ 111, 111, 103,
+ 112, 122, 96
};
static const int lexer_goto_row38[] = {
- 9,
- 48, 95, -32,
- 97, 101, 89,
- 102, 102, 103,
- 103, 108, 89,
- 109, 109, 104,
+ 7,
+ 48, 107, -37,
+ 108, 108, 104,
+ 109, 109, 96,
110, 110, 105,
- 111, 114, 89,
- 115, 115, 106,
- 116, 122, 89
+ 111, 119, 96,
+ 120, 120, 106,
+ 121, 122, 96
};
static const int lexer_goto_row39[] = {
- 5,
- 48, 95, -32,
+ 7,
+ 48, 95, -35,
97, 97, 107,
- 98, 110, 89,
+ 98, 110, 96,
111, 111, 108,
- 112, 122, 89
+ 112, 116, 96,
+ 117, 117, 109,
+ 118, 122, 96
};
static const int lexer_goto_row40[] = {
- 3,
- 48, 110, -35,
- 111, 111, 109,
- 112, 122, 89
+ 2,
+ 48, 95, -35,
+ 97, 122, 96
};
static const int lexer_goto_row41[] = {
- 8,
- 48, 95, -32,
- 97, 100, 89,
- 101, 101, 110,
- 102, 110, 89,
- 111, 111, 111,
- 112, 116, 89,
- 117, 117, 112,
- 118, 122, 89
+ 9,
+ 48, 95, -35,
+ 97, 101, 96,
+ 102, 102, 110,
+ 103, 108, 96,
+ 109, 109, 111,
+ 110, 110, 112,
+ 111, 114, 96,
+ 115, 115, 113,
+ 116, 122, 96
};
static const int lexer_goto_row42[] = {
- 6,
- 48, 95, -32,
- 97, 109, 89,
- 110, 110, 113,
- 111, 113, 89,
- 114, 114, 114,
- 115, 122, 89
+ 5,
+ 48, 95, -35,
+ 97, 97, 114,
+ 98, 110, 96,
+ 111, 111, 115,
+ 112, 122, 96
};
static const int lexer_goto_row43[] = {
- 7,
- 48, 95, -32,
- 97, 97, 115,
- 98, 113, 89,
- 114, 114, 116,
- 115, 116, 89,
- 117, 117, 117,
- 118, 122, 89
+ 3,
+ 48, 110, -38,
+ 111, 111, 116,
+ 112, 122, 96
};
static const int lexer_goto_row44[] = {
- 3,
- 48, 100, -42,
- 101, 101, 118,
- 102, 122, 89
+ 8,
+ 48, 95, -35,
+ 97, 100, 96,
+ 101, 101, 117,
+ 102, 110, 96,
+ 111, 111, 118,
+ 112, 116, 96,
+ 117, 117, 119,
+ 118, 122, 96
};
static const int lexer_goto_row45[] = {
- 5,
- 48, 100, -42,
- 101, 101, 119,
- 102, 116, 89,
- 117, 117, 120,
- 118, 122, 89
+ 6,
+ 48, 95, -35,
+ 97, 109, 96,
+ 110, 110, 120,
+ 111, 113, 96,
+ 114, 114, 121,
+ 115, 122, 96
};
static const int lexer_goto_row46[] = {
- 8,
- 48, 95, -32,
- 97, 103, 89,
- 104, 104, 121,
- 105, 113, 89,
- 114, 114, 122,
- 115, 120, 89,
- 121, 121, 123,
- 122, 122, 89
+ 7,
+ 48, 95, -35,
+ 97, 97, 122,
+ 98, 113, 96,
+ 114, 114, 123,
+ 115, 116, 96,
+ 117, 117, 124,
+ 118, 122, 96
};
static const int lexer_goto_row47[] = {
3,
- 48, 109, -43,
- 110, 110, 124,
- 111, 122, 89
+ 48, 100, -45,
+ 101, 101, 125,
+ 102, 122, 96
};
static const int lexer_goto_row48[] = {
- 3,
- 48, 95, -32,
- 97, 97, 125,
- 98, 122, 89
+ 5,
+ 48, 100, -45,
+ 101, 101, 126,
+ 102, 116, 96,
+ 117, 117, 127,
+ 118, 122, 96
};
static const int lexer_goto_row49[] = {
- 4,
- 48, 103, -47,
- 104, 104, 126,
- 105, 105, 127,
- 106, 122, 89
+ 8,
+ 48, 95, -35,
+ 97, 103, 96,
+ 104, 104, 128,
+ 105, 113, 96,
+ 114, 114, 129,
+ 115, 120, 96,
+ 121, 121, 130,
+ 122, 122, 96
};
static const int lexer_goto_row50[] = {
- 11,
- 0, 9, 128,
- 11, 12, 128,
- 14, 33, 128,
- 34, 34, 129,
- 35, 91, 128,
- 92, 92, 130,
- 93, 122, 128,
- 123, 123, 131,
- 124, 124, 128,
- 125, 125, 132,
- 126, 255, 128
+ 3,
+ 48, 109, -46,
+ 110, 110, 131,
+ 111, 122, 96
};
-static const int lexer_goto_row53[] = {
+static const int lexer_goto_row51[] = {
3,
- 0, 33, -8,
- 34, 34, 133,
- 35, 255, -8
+ 48, 95, -35,
+ 97, 97, 132,
+ 98, 122, 96
};
-static const int lexer_goto_row54[] = {
+static const int lexer_goto_row52[] = {
+ 4,
+ 48, 103, -50,
+ 104, 104, 133,
+ 105, 105, 134,
+ 106, 122, 96
+};
+static const int lexer_goto_row53[] = {
1,
- 34, 34, 134
+ 61, 61, 135
};
-static const int lexer_goto_row55[] = {
+static const int lexer_goto_row54[] = {
+ 11,
+ 0, 9, 136,
+ 11, 12, 136,
+ 14, 33, 136,
+ 34, 34, 137,
+ 35, 91, 136,
+ 92, 92, 138,
+ 93, 122, 136,
+ 123, 123, 139,
+ 124, 124, 136,
+ 125, 125, 140,
+ 126, 255, 136
+};
+static const int lexer_goto_row58[] = {
3,
- 0, 9, 135,
- 11, 12, 135,
- 14, 255, 135
-};
-static const int lexer_goto_row57[] = {
- 1,
- 0, 255, -9
+ 0, 33, -8,
+ 34, 34, 141,
+ 35, 255, -8
};
static const int lexer_goto_row59[] = {
1,
- 10, 10, 136
+ 34, 34, 142
};
-static const int lexer_goto_row61[] = {
- 1,
- 39, 39, 137
+static const int lexer_goto_row60[] = {
+ 3,
+ 0, 9, 143,
+ 11, 12, 143,
+ 14, 255, 143
};
static const int lexer_goto_row62[] = {
1,
- 39, 39, 138
-};
-static const int lexer_goto_row63[] = {
- 3,
- 0, 9, 139,
- 11, 12, 139,
- 14, 255, 139
+ 0, 255, -9
};
static const int lexer_goto_row64[] = {
1,
- 61, 61, 140
+ 10, 10, 144
+};
+static const int lexer_goto_row67[] = {
+ 1,
+ 39, 39, 145
};
static const int lexer_goto_row68[] = {
1,
- 46, 46, 141
+ 39, 39, 146
};
static const int lexer_goto_row69[] = {
- 1,
- 48, 57, 68
+ 3,
+ 0, 9, 147,
+ 11, 12, 147,
+ 14, 255, 147
};
-static const int lexer_goto_row71[] = {
+static const int lexer_goto_row70[] = {
1,
- 48, 57, 68
+ 61, 61, 148
};
-static const int lexer_goto_row72[] = {
- 3,
- 48, 57, 142,
- 65, 70, 143,
- 97, 102, 144
-};
-static const int lexer_goto_row73[] = {
+static const int lexer_goto_row74[] = {
1,
- 48, 102, -73
+ 46, 46, 149
};
static const int lexer_goto_row75[] = {
1,
- 61, 61, 145
+ 48, 57, 74
};
-static const int lexer_goto_row76[] = {
+static const int lexer_goto_row77[] = {
1,
- 62, 62, 146
+ 48, 57, 74
};
-static const int lexer_goto_row79[] = {
- 1,
- 61, 61, 147
+static const int lexer_goto_row78[] = {
+ 3,
+ 48, 57, 150,
+ 65, 70, 151,
+ 97, 102, 152
};
-static const int lexer_goto_row80[] = {
+static const int lexer_goto_row79[] = {
1,
- 48, 122, -27
+ 48, 102, -79
};
static const int lexer_goto_row81[] = {
1,
- 48, 122, -27
+ 61, 61, 153
};
static const int lexer_goto_row82[] = {
1,
- 48, 122, -27
-};
-static const int lexer_goto_row83[] = {
- 1,
- 48, 122, -27
-};
-static const int lexer_goto_row84[] = {
- 1,
- 100, 100, 148
+ 62, 62, 154
};
static const int lexer_goto_row85[] = {
- 4,
- 48, 57, 149,
- 65, 90, 150,
- 95, 95, 151,
- 97, 122, 152
+ 1,
+ 61, 61, 155
};
static const int lexer_goto_row86[] = {
- 5,
- 0, 91, 153,
- 92, 92, 154,
- 93, 95, 153,
- 96, 96, 155,
- 97, 255, 153
+ 1,
+ 48, 122, -29
};
static const int lexer_goto_row87[] = {
1,
- 48, 122, -38
+ 48, 122, -29
};
static const int lexer_goto_row88[] = {
1,
- 48, 122, -38
+ 48, 122, -29
};
static const int lexer_goto_row89[] = {
1,
- 48, 122, -38
-};
-static const int lexer_goto_row90[] = {
- 1,
- 48, 122, -38
+ 48, 122, -29
};
static const int lexer_goto_row91[] = {
- 5,
- 48, 110, -35,
- 111, 111, 156,
- 112, 114, 89,
- 115, 115, 157,
- 116, 122, 89
+ 1,
+ 100, 100, 156
};
static const int lexer_goto_row92[] = {
4,
- 48, 95, -32,
- 97, 99, 89,
- 100, 100, 158,
- 101, 122, 89
+ 48, 57, 157,
+ 65, 90, 158,
+ 95, 95, 159,
+ 97, 122, 160
};
static const int lexer_goto_row93[] = {
- 4,
- 48, 95, -32,
- 97, 114, 89,
- 115, 115, 159,
- 116, 122, 89
+ 5,
+ 0, 91, 161,
+ 92, 92, 162,
+ 93, 95, 161,
+ 96, 96, 163,
+ 97, 255, 161
};
static const int lexer_goto_row94[] = {
- 3,
- 48, 100, -42,
- 101, 101, 160,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row95[] = {
- 3,
- 48, 95, -32,
- 97, 97, 161,
- 98, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row96[] = {
- 3,
- 48, 109, -43,
- 110, 110, 162,
- 111, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row97[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row98[] = {
- 3,
- 48, 114, -94,
- 115, 115, 163,
- 116, 122, 89
+ 5,
+ 48, 110, -38,
+ 111, 111, 164,
+ 112, 114, 96,
+ 115, 115, 165,
+ 116, 122, 96
};
static const int lexer_goto_row99[] = {
- 5,
- 48, 99, -93,
- 100, 100, 164,
- 101, 116, 89,
- 117, 117, 165,
- 118, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 99, 96,
+ 100, 100, 166,
+ 101, 122, 96
};
static const int lexer_goto_row100[] = {
4,
- 48, 95, -32,
- 97, 115, 89,
- 116, 116, 166,
- 117, 122, 89
+ 48, 95, -35,
+ 97, 114, 96,
+ 115, 115, 167,
+ 116, 122, 96
};
static const int lexer_goto_row101[] = {
3,
- 48, 107, -34,
- 108, 108, 167,
- 109, 122, 89
+ 48, 100, -45,
+ 101, 101, 168,
+ 102, 122, 96
};
static const int lexer_goto_row102[] = {
3,
- 48, 113, -33,
- 114, 114, 168,
- 115, 122, 89
+ 48, 95, -35,
+ 97, 97, 169,
+ 98, 122, 96
};
static const int lexer_goto_row103[] = {
3,
- 48, 109, -43,
- 110, 110, 169,
- 111, 122, 89
+ 48, 109, -46,
+ 110, 110, 170,
+ 111, 122, 96
};
static const int lexer_goto_row104[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row105[] = {
- 4,
- 48, 95, -32,
- 97, 111, 89,
- 112, 112, 170,
- 113, 122, 89
+ 3,
+ 48, 114, -101,
+ 115, 115, 171,
+ 116, 122, 96
};
static const int lexer_goto_row106[] = {
- 6,
- 48, 95, -32,
- 97, 104, 89,
- 105, 105, 171,
- 106, 115, 89,
- 116, 116, 172,
- 117, 122, 89
+ 5,
+ 48, 99, -100,
+ 100, 100, 172,
+ 101, 116, 96,
+ 117, 117, 173,
+ 118, 122, 96
};
static const int lexer_goto_row107[] = {
- 5,
- 48, 95, -32,
- 97, 97, 173,
- 98, 114, 89,
- 115, 115, 174,
- 116, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 115, 96,
+ 116, 116, 174,
+ 117, 122, 96
};
static const int lexer_goto_row108[] = {
3,
- 48, 97, -32,
- 98, 98, 175,
- 99, 122, 89
+ 48, 107, -37,
+ 108, 108, 175,
+ 109, 122, 96
};
static const int lexer_goto_row109[] = {
3,
- 48, 110, -35,
- 111, 111, 176,
- 112, 122, 89
+ 48, 113, -36,
+ 114, 114, 176,
+ 115, 122, 96
};
static const int lexer_goto_row110[] = {
3,
- 48, 99, -93,
- 100, 100, 177,
- 101, 122, 89
+ 48, 109, -46,
+ 110, 110, 177,
+ 111, 122, 96
};
static const int lexer_goto_row111[] = {
- 4,
- 48, 95, -32,
- 97, 118, 89,
- 119, 119, 178,
- 120, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row112[] = {
- 3,
- 48, 115, -101,
- 116, 116, 179,
- 117, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 111, 96,
+ 112, 112, 178,
+ 113, 122, 96
};
static const int lexer_goto_row113[] = {
- 3,
- 48, 107, -34,
- 108, 108, 180,
- 109, 122, 89
+ 6,
+ 48, 95, -35,
+ 97, 104, 96,
+ 105, 105, 179,
+ 106, 115, 96,
+ 116, 116, 180,
+ 117, 122, 96
};
static const int lexer_goto_row114[] = {
- 4,
- 48, 95, -32,
- 97, 98, 89,
- 99, 99, 181,
- 100, 122, 89
+ 5,
+ 48, 95, -35,
+ 97, 97, 181,
+ 98, 114, 96,
+ 115, 115, 182,
+ 116, 122, 96
};
static const int lexer_goto_row115[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 97, -35,
+ 98, 98, 183,
+ 99, 122, 96
};
static const int lexer_goto_row116[] = {
3,
- 48, 98, -115,
- 99, 99, 182,
- 100, 122, 89
+ 48, 110, -38,
+ 111, 111, 184,
+ 112, 122, 96
};
static const int lexer_goto_row117[] = {
- 5,
- 48, 104, -107,
- 105, 105, 183,
- 106, 110, 89,
- 111, 111, 184,
- 112, 122, 89
+ 3,
+ 48, 99, -100,
+ 100, 100, 185,
+ 101, 122, 96
};
static const int lexer_goto_row118[] = {
- 3,
- 48, 97, -32,
- 98, 98, 185,
- 99, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 118, 96,
+ 119, 119, 186,
+ 120, 122, 96
};
static const int lexer_goto_row119[] = {
- 5,
- 48, 99, -93,
- 100, 100, 186,
- 101, 115, 89,
+ 3,
+ 48, 115, -108,
116, 116, 187,
- 117, 122, 89
+ 117, 122, 96
};
static const int lexer_goto_row120[] = {
3,
- 48, 107, -34,
+ 48, 107, -37,
108, 108, 188,
- 109, 122, 89
+ 109, 122, 96
};
static const int lexer_goto_row121[] = {
- 3,
- 48, 111, -106,
- 112, 112, 189,
- 113, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 98, 96,
+ 99, 99, 189,
+ 100, 122, 96
};
static const int lexer_goto_row122[] = {
- 3,
- 48, 100, -42,
- 101, 101, 190,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row123[] = {
- 4,
- 48, 95, -32,
- 97, 116, 89,
- 117, 117, 191,
- 118, 122, 89
+ 3,
+ 48, 98, -122,
+ 99, 99, 190,
+ 100, 122, 96
};
static const int lexer_goto_row124[] = {
- 3,
- 48, 111, -106,
- 112, 112, 192,
- 113, 122, 89
+ 5,
+ 48, 104, -114,
+ 105, 105, 191,
+ 106, 110, 96,
+ 111, 111, 192,
+ 112, 122, 96
};
static const int lexer_goto_row125[] = {
3,
- 48, 104, -107,
- 105, 105, 193,
- 106, 122, 89
+ 48, 97, -35,
+ 98, 98, 193,
+ 99, 122, 96
};
static const int lexer_goto_row126[] = {
- 3,
- 48, 113, -33,
- 114, 114, 194,
- 115, 122, 89
+ 5,
+ 48, 99, -100,
+ 100, 100, 194,
+ 101, 115, 96,
+ 116, 116, 195,
+ 117, 122, 96
};
static const int lexer_goto_row127[] = {
3,
- 48, 104, -107,
- 105, 105, 195,
- 106, 122, 89
+ 48, 107, -37,
+ 108, 108, 196,
+ 109, 122, 96
};
static const int lexer_goto_row128[] = {
3,
- 48, 115, -101,
- 116, 116, 196,
- 117, 122, 89
+ 48, 111, -113,
+ 112, 112, 197,
+ 113, 122, 96
};
static const int lexer_goto_row129[] = {
- 2,
- 0, 123, -51,
- 124, 255, 128
+ 3,
+ 48, 100, -45,
+ 101, 101, 198,
+ 102, 122, 96
+};
+static const int lexer_goto_row130[] = {
+ 4,
+ 48, 95, -35,
+ 97, 116, 96,
+ 117, 117, 199,
+ 118, 122, 96
};
static const int lexer_goto_row131[] = {
3,
- 0, 9, 197,
- 11, 12, 197,
- 14, 255, 197
+ 48, 111, -113,
+ 112, 112, 200,
+ 113, 122, 96
+};
+static const int lexer_goto_row132[] = {
+ 3,
+ 48, 104, -114,
+ 105, 105, 201,
+ 106, 122, 96
};
static const int lexer_goto_row133[] = {
3,
- 0, 124, -51,
- 125, 125, 198,
- 126, 255, 128
+ 48, 113, -36,
+ 114, 114, 202,
+ 115, 122, 96
+};
+static const int lexer_goto_row134[] = {
+ 3,
+ 48, 104, -114,
+ 105, 105, 203,
+ 106, 122, 96
};
static const int lexer_goto_row135[] = {
- 11,
- 0, 9, 199,
- 10, 10, 200,
- 11, 12, 199,
- 13, 13, 201,
- 14, 33, 199,
- 34, 34, 202,
- 35, 91, 199,
- 92, 92, 203,
- 93, 122, 199,
- 123, 123, 204,
- 124, 255, 199
-};
-static const int lexer_goto_row136[] = {
- 1,
- 0, 255, -54
+ 3,
+ 48, 115, -108,
+ 116, 116, 204,
+ 117, 122, 96
+};
+static const int lexer_goto_row137[] = {
+ 2,
+ 0, 123, -55,
+ 124, 255, 136
};
static const int lexer_goto_row139[] = {
- 9,
+ 3,
0, 9, 205,
- 10, 10, 206,
11, 12, 205,
- 13, 13, 207,
- 14, 38, 205,
- 39, 39, 208,
- 40, 91, 205,
- 92, 92, 209,
- 93, 255, 205
+ 14, 255, 205
};
-static const int lexer_goto_row140[] = {
- 1,
- 39, 39, 210
+static const int lexer_goto_row141[] = {
+ 3,
+ 0, 124, -55,
+ 125, 125, 206,
+ 126, 255, 136
};
static const int lexer_goto_row143[] = {
- 1,
- 48, 102, -73
+ 11,
+ 0, 9, 207,
+ 10, 10, 208,
+ 11, 12, 207,
+ 13, 13, 209,
+ 14, 33, 207,
+ 34, 34, 210,
+ 35, 91, 207,
+ 92, 92, 211,
+ 93, 122, 207,
+ 123, 123, 212,
+ 124, 255, 207
};
static const int lexer_goto_row144[] = {
1,
- 48, 102, -73
-};
-static const int lexer_goto_row145[] = {
- 1,
- 48, 102, -73
+ 0, 255, -59
};
-static const int lexer_goto_row149[] = {
- 1,
- 101, 101, 211
+static const int lexer_goto_row147[] = {
+ 9,
+ 0, 9, 213,
+ 10, 10, 214,
+ 11, 12, 213,
+ 13, 13, 215,
+ 14, 38, 213,
+ 39, 39, 216,
+ 40, 91, 213,
+ 92, 92, 217,
+ 93, 255, 213
};
-static const int lexer_goto_row150[] = {
+static const int lexer_goto_row148[] = {
1,
- 48, 122, -86
+ 39, 39, 218
};
static const int lexer_goto_row151[] = {
1,
- 48, 122, -86
+ 48, 102, -79
};
static const int lexer_goto_row152[] = {
1,
- 48, 122, -86
+ 48, 102, -79
};
static const int lexer_goto_row153[] = {
1,
- 48, 122, -86
-};
-static const int lexer_goto_row154[] = {
- 1,
- 0, 255, -87
-};
-static const int lexer_goto_row155[] = {
- 1,
- 0, 255, 212
-};
-static const int lexer_goto_row156[] = {
- 3,
- 0, 124, 213,
- 125, 125, 214,
- 126, 255, 213
+ 48, 102, -79
};
static const int lexer_goto_row157[] = {
- 3,
- 48, 113, -33,
- 114, 114, 215,
- 115, 122, 89
+ 1,
+ 101, 101, 219
};
static const int lexer_goto_row158[] = {
- 3,
- 48, 115, -101,
- 116, 116, 216,
- 117, 122, 89
+ 1,
+ 48, 122, -93
};
static const int lexer_goto_row159[] = {
1,
- 48, 122, -38
+ 48, 122, -93
};
static const int lexer_goto_row160[] = {
- 3,
- 48, 100, -42,
- 101, 101, 217,
- 102, 122, 89
+ 1,
+ 48, 122, -93
};
static const int lexer_goto_row161[] = {
- 3,
- 48, 95, -32,
- 97, 97, 218,
- 98, 122, 89
+ 1,
+ 48, 122, -93
};
static const int lexer_goto_row162[] = {
- 3,
- 48, 114, -94,
- 115, 115, 219,
- 116, 122, 89
+ 1,
+ 0, 255, -94
};
static const int lexer_goto_row163[] = {
- 3,
- 48, 115, -101,
- 116, 116, 220,
- 117, 122, 89
+ 1,
+ 0, 255, 220
};
static const int lexer_goto_row164[] = {
3,
- 48, 100, -42,
- 101, 101, 221,
- 102, 122, 89
+ 0, 124, 221,
+ 125, 125, 222,
+ 126, 255, 221
};
static const int lexer_goto_row165[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 113, -36,
+ 114, 114, 223,
+ 115, 122, 96
};
static const int lexer_goto_row166[] = {
- 4,
- 48, 95, -32,
- 97, 108, 89,
- 109, 109, 222,
- 110, 122, 89
+ 3,
+ 48, 115, -108,
+ 116, 116, 224,
+ 117, 122, 96
};
static const int lexer_goto_row167[] = {
- 3,
- 48, 100, -42,
- 101, 101, 223,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row168[] = {
3,
- 48, 114, -94,
- 115, 115, 224,
- 116, 122, 89
+ 48, 100, -45,
+ 101, 101, 225,
+ 102, 122, 96
};
static const int lexer_goto_row169[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 95, -35,
+ 97, 97, 226,
+ 98, 122, 96
};
static const int lexer_goto_row170[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 114, -101,
+ 115, 115, 227,
+ 116, 122, 96
};
static const int lexer_goto_row171[] = {
- 5,
- 48, 107, -34,
- 108, 108, 225,
- 109, 110, 89,
- 111, 111, 226,
- 112, 122, 89
+ 3,
+ 48, 115, -108,
+ 116, 116, 228,
+ 117, 122, 96
};
static const int lexer_goto_row172[] = {
3,
- 48, 115, -101,
- 116, 116, 227,
- 117, 122, 89
+ 48, 100, -45,
+ 101, 101, 229,
+ 102, 122, 96
};
static const int lexer_goto_row173[] = {
- 5,
- 48, 100, -42,
- 101, 101, 228,
- 102, 113, 89,
- 114, 114, 229,
- 115, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row174[] = {
- 1,
- 48, 122, -38
+ 4,
+ 48, 95, -35,
+ 97, 108, 96,
+ 109, 109, 230,
+ 110, 122, 96
};
static const int lexer_goto_row175[] = {
3,
- 48, 100, -42,
- 101, 101, 230,
- 102, 122, 89
+ 48, 100, -45,
+ 101, 101, 231,
+ 102, 122, 96
};
static const int lexer_goto_row176[] = {
3,
- 48, 100, -42,
- 101, 101, 231,
- 102, 122, 89
+ 48, 114, -101,
+ 115, 115, 232,
+ 116, 122, 96
};
static const int lexer_goto_row177[] = {
- 3,
- 48, 111, -106,
- 112, 112, 232,
- 113, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row178[] = {
- 3,
- 48, 116, -124,
- 117, 117, 233,
- 118, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row179[] = {
- 1,
- 48, 122, -38
+ 5,
+ 48, 107, -37,
+ 108, 108, 233,
+ 109, 110, 96,
+ 111, 111, 234,
+ 112, 122, 96
};
static const int lexer_goto_row180[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 115, -108,
+ 116, 116, 235,
+ 117, 122, 96
};
static const int lexer_goto_row181[] = {
- 3,
- 48, 107, -34,
- 108, 108, 234,
- 109, 122, 89
+ 5,
+ 48, 100, -45,
+ 101, 101, 236,
+ 102, 113, 96,
+ 114, 114, 237,
+ 115, 122, 96
};
static const int lexer_goto_row182[] = {
- 3,
- 48, 100, -42,
- 101, 101, 235,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row183[] = {
- 4,
- 48, 95, -32,
- 97, 106, 89,
- 107, 107, 236,
- 108, 122, 89
+ 3,
+ 48, 100, -45,
+ 101, 101, 238,
+ 102, 122, 96
};
static const int lexer_goto_row184[] = {
- 4,
- 48, 95, -32,
- 97, 117, 89,
- 118, 118, 237,
- 119, 122, 89
+ 3,
+ 48, 100, -45,
+ 101, 101, 239,
+ 102, 122, 96
};
static const int lexer_goto_row185[] = {
3,
- 48, 115, -101,
- 116, 116, 238,
- 117, 122, 89
+ 48, 111, -113,
+ 112, 112, 240,
+ 113, 122, 96
};
static const int lexer_goto_row186[] = {
3,
- 48, 107, -34,
- 108, 108, 239,
- 109, 122, 89
+ 48, 116, -131,
+ 117, 117, 241,
+ 118, 122, 96
};
static const int lexer_goto_row187[] = {
- 3,
- 48, 100, -42,
- 101, 101, 240,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row188[] = {
- 3,
- 48, 116, -124,
- 117, 117, 241,
- 118, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row189[] = {
3,
- 48, 101, -39,
- 102, 102, 242,
- 103, 122, 89
+ 48, 107, -37,
+ 108, 108, 242,
+ 109, 122, 96
};
static const int lexer_goto_row190[] = {
3,
- 48, 100, -42,
+ 48, 100, -45,
101, 101, 243,
- 102, 122, 89
+ 102, 122, 96
};
static const int lexer_goto_row191[] = {
- 3,
- 48, 109, -43,
- 110, 110, 244,
- 111, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 106, 96,
+ 107, 107, 244,
+ 108, 122, 96
};
static const int lexer_goto_row192[] = {
- 3,
- 48, 100, -42,
- 101, 101, 245,
- 102, 122, 89
+ 4,
+ 48, 95, -35,
+ 97, 117, 96,
+ 118, 118, 245,
+ 119, 122, 96
};
static const int lexer_goto_row193[] = {
3,
- 48, 100, -42,
- 101, 101, 246,
- 102, 122, 89
+ 48, 115, -108,
+ 116, 116, 246,
+ 117, 122, 96
};
static const int lexer_goto_row194[] = {
3,
- 48, 117, -185,
- 118, 118, 247,
- 119, 122, 89
+ 48, 107, -37,
+ 108, 108, 247,
+ 109, 122, 96
};
static const int lexer_goto_row195[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 100, -45,
+ 101, 101, 248,
+ 102, 122, 96
};
static const int lexer_goto_row196[] = {
3,
- 48, 107, -34,
- 108, 108, 248,
- 109, 122, 89
+ 48, 116, -131,
+ 117, 117, 249,
+ 118, 122, 96
};
static const int lexer_goto_row197[] = {
3,
- 48, 103, -47,
- 104, 104, 249,
- 105, 122, 89
+ 48, 101, -42,
+ 102, 102, 250,
+ 103, 122, 96
};
static const int lexer_goto_row198[] = {
- 1,
- 0, 255, -130
+ 3,
+ 48, 100, -45,
+ 101, 101, 251,
+ 102, 122, 96
};
static const int lexer_goto_row199[] = {
- 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
+ 3,
+ 48, 109, -46,
+ 110, 110, 252,
+ 111, 122, 96
};
static const int lexer_goto_row200[] = {
- 1,
- 0, 255, -136
+ 3,
+ 48, 100, -45,
+ 101, 101, 253,
+ 102, 122, 96
};
static const int lexer_goto_row201[] = {
- 1,
- 0, 255, -136
+ 3,
+ 48, 100, -45,
+ 101, 101, 254,
+ 102, 122, 96
};
static const int lexer_goto_row202[] = {
- 1,
- 0, 255, -136
+ 3,
+ 48, 117, -193,
+ 118, 118, 255,
+ 119, 122, 96
};
static const int lexer_goto_row203[] = {
- 5,
- 0, 33, -136,
- 34, 34, 256,
- 35, 122, -136,
- 123, 123, 257,
- 124, 255, 199
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row204[] = {
3,
- 0, 9, 258,
- 11, 12, 258,
- 14, 255, 258
+ 48, 107, -37,
+ 108, 108, 256,
+ 109, 122, 96
};
static const int lexer_goto_row205[] = {
- 5,
- 0, 33, -136,
- 34, 34, 259,
- 35, 122, -136,
- 123, 123, 260,
- 124, 255, 199
+ 3,
+ 48, 103, -50,
+ 104, 104, 257,
+ 105, 122, 96
};
static const int lexer_goto_row206[] = {
1,
- 0, 255, -140
+ 0, 255, -138
};
static const int lexer_goto_row207[] = {
- 1,
- 0, 255, -140
+ 11,
+ 0, 9, 258,
+ 10, 10, 259,
+ 11, 12, 258,
+ 13, 13, 260,
+ 14, 33, 258,
+ 34, 34, 261,
+ 35, 91, 258,
+ 92, 92, 262,
+ 93, 122, 258,
+ 123, 123, 263,
+ 124, 255, 258
};
static const int lexer_goto_row208[] = {
1,
- 0, 255, -140
+ 0, 255, -144
};
static const int lexer_goto_row209[] = {
- 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
+ 1,
+ 0, 255, -144
};
static const int lexer_goto_row210[] = {
+ 1,
+ 0, 255, -144
+};
+static const int lexer_goto_row211[] = {
+ 5,
+ 0, 33, -144,
+ 34, 34, 264,
+ 35, 122, -144,
+ 123, 123, 265,
+ 124, 255, 207
+};
+static const int lexer_goto_row212[] = {
3,
0, 9, 266,
11, 12, 266,
14, 255, 266
};
-static const int lexer_goto_row212[] = {
- 1,
- 98, 98, 267
-};
static const int lexer_goto_row213[] = {
- 1,
- 0, 255, -87
+ 5,
+ 0, 33, -144,
+ 34, 34, 267,
+ 35, 122, -144,
+ 123, 123, 268,
+ 124, 255, 207
};
static const int lexer_goto_row214[] = {
1,
- 0, 255, -87
+ 0, 255, -148
+};
+static const int lexer_goto_row215[] = {
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row216[] = {
- 3,
- 48, 115, -101,
- 116, 116, 268,
- 117, 122, 89
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row217[] = {
- 3,
- 48, 113, -33,
- 114, 114, 269,
- 115, 122, 89
+ 9,
+ 0, 9, 269,
+ 10, 10, 270,
+ 11, 12, 269,
+ 13, 13, 271,
+ 14, 38, 269,
+ 39, 39, 272,
+ 40, 91, 269,
+ 92, 92, 273,
+ 93, 255, 269
};
static const int lexer_goto_row218[] = {
3,
- 48, 113, -33,
- 114, 114, 270,
- 115, 122, 89
-};
-static const int lexer_goto_row219[] = {
- 3,
- 48, 106, -184,
- 107, 107, 271,
- 108, 122, 89
+ 0, 9, 274,
+ 11, 12, 274,
+ 14, 255, 274
};
static const int lexer_goto_row220[] = {
- 3,
- 48, 114, -94,
- 115, 115, 272,
- 116, 122, 89
+ 1,
+ 98, 98, 275
};
static const int lexer_goto_row221[] = {
- 3,
- 48, 104, -107,
- 105, 105, 273,
- 106, 122, 89
-};
-static const int lexer_goto_row222[] = {
1,
- 48, 122, -38
+ 0, 255, -94
};
-static const int lexer_goto_row223[] = {
+static const int lexer_goto_row222[] = {
1,
- 48, 122, -38
+ 0, 255, -94
};
static const int lexer_goto_row224[] = {
3,
- 48, 113, -33,
- 114, 114, 274,
- 115, 122, 89
+ 48, 115, -108,
+ 116, 116, 276,
+ 117, 122, 96
};
static const int lexer_goto_row225[] = {
3,
- 48, 100, -42,
- 101, 101, 275,
- 102, 122, 89
+ 48, 113, -36,
+ 114, 114, 277,
+ 115, 122, 96
};
static const int lexer_goto_row226[] = {
3,
- 48, 104, -107,
- 105, 105, 276,
- 106, 122, 89
+ 48, 113, -36,
+ 114, 114, 278,
+ 115, 122, 96
};
static const int lexer_goto_row227[] = {
3,
- 48, 113, -33,
- 114, 114, 277,
- 115, 122, 89
+ 48, 106, -192,
+ 107, 107, 279,
+ 108, 122, 96
};
static const int lexer_goto_row228[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 114, -101,
+ 115, 115, 280,
+ 116, 122, 96
};
static const int lexer_goto_row229[] = {
3,
- 48, 113, -33,
- 114, 114, 278,
- 115, 122, 89
+ 48, 104, -114,
+ 105, 105, 281,
+ 106, 122, 96
};
static const int lexer_goto_row230[] = {
- 3,
- 48, 116, -124,
- 117, 117, 279,
- 118, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row231[] = {
- 3,
- 48, 115, -101,
- 116, 116, 280,
- 117, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row232[] = {
3,
- 48, 107, -34,
- 108, 108, 281,
- 109, 122, 89
+ 48, 113, -36,
+ 114, 114, 282,
+ 115, 122, 96
};
static const int lexer_goto_row233[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 100, -45,
+ 101, 101, 283,
+ 102, 122, 96
};
static const int lexer_goto_row234[] = {
3,
- 48, 107, -34,
- 108, 108, 282,
- 109, 122, 89
+ 48, 104, -114,
+ 105, 105, 284,
+ 106, 122, 96
};
static const int lexer_goto_row235[] = {
3,
- 48, 95, -32,
- 97, 97, 283,
- 98, 122, 89
+ 48, 113, -36,
+ 114, 114, 285,
+ 115, 122, 96
};
static const int lexer_goto_row236[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row237[] = {
3,
- 48, 95, -32,
- 97, 97, 284,
- 98, 122, 89
+ 48, 113, -36,
+ 114, 114, 286,
+ 115, 122, 96
};
static const int lexer_goto_row238[] = {
3,
- 48, 95, -32,
- 97, 97, 285,
- 98, 122, 89
+ 48, 116, -131,
+ 117, 117, 287,
+ 118, 122, 96
};
static const int lexer_goto_row239[] = {
3,
- 48, 100, -42,
- 101, 101, 286,
- 102, 122, 89
+ 48, 115, -108,
+ 116, 116, 288,
+ 117, 122, 96
};
static const int lexer_goto_row240[] = {
3,
- 48, 104, -107,
- 105, 105, 287,
- 106, 122, 89
+ 48, 107, -37,
+ 108, 108, 289,
+ 109, 122, 96
};
static const int lexer_goto_row241[] = {
- 3,
- 48, 101, -39,
- 102, 102, 288,
- 103, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row242[] = {
3,
- 48, 113, -33,
- 114, 114, 289,
- 115, 122, 89
+ 48, 107, -37,
+ 108, 108, 290,
+ 109, 122, 96
};
static const int lexer_goto_row243[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 95, -35,
+ 97, 97, 291,
+ 98, 122, 96
};
static const int lexer_goto_row244[] = {
- 3,
- 48, 113, -33,
- 114, 114, 290,
- 115, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row245[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 95, -35,
+ 97, 97, 292,
+ 98, 122, 96
};
static const int lexer_goto_row246[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 95, -35,
+ 97, 97, 293,
+ 98, 122, 96
};
static const int lexer_goto_row247[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 100, -45,
+ 101, 101, 294,
+ 102, 122, 96
};
static const int lexer_goto_row248[] = {
3,
- 48, 100, -42,
- 101, 101, 291,
- 102, 122, 89
+ 48, 104, -114,
+ 105, 105, 295,
+ 106, 122, 96
};
static const int lexer_goto_row249[] = {
3,
- 48, 100, -42,
- 101, 101, 292,
- 102, 122, 89
+ 48, 101, -42,
+ 102, 102, 296,
+ 103, 122, 96
};
static const int lexer_goto_row250[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 113, -36,
+ 114, 114, 297,
+ 115, 122, 96
};
static const int lexer_goto_row251[] = {
1,
- 0, 255, -200
+ 48, 122, -41
};
static const int lexer_goto_row252[] = {
- 11,
- 0, 9, 293,
- 10, 10, 251,
- 11, 12, 293,
- 13, 13, 252,
- 14, 33, 293,
- 34, 34, 294,
- 35, 91, 293,
- 92, 92, 295,
- 93, 122, 293,
- 123, 123, 296,
- 124, 255, 293
+ 3,
+ 48, 113, -36,
+ 114, 114, 298,
+ 115, 122, 96
};
static const int lexer_goto_row253[] = {
1,
- 0, 255, -253
+ 48, 122, -41
};
static const int lexer_goto_row254[] = {
- 5,
- 0, 33, -253,
- 34, 34, 297,
- 35, 122, -253,
- 123, 123, 298,
- 124, 255, 293
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row255[] = {
- 3,
- 0, 9, 299,
- 11, 12, 299,
- 14, 255, 299
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row256[] = {
- 5,
- 0, 33, -253,
- 34, 34, 300,
- 35, 122, -253,
- 123, 123, 301,
- 124, 255, 293
+ 3,
+ 48, 100, -45,
+ 101, 101, 299,
+ 102, 122, 96
};
static const int lexer_goto_row257[] = {
3,
- 0, 33, -136,
- 34, 34, 302,
- 35, 255, -204
+ 48, 100, -45,
+ 101, 101, 300,
+ 102, 122, 96
};
static const int lexer_goto_row258[] = {
- 3,
- 0, 122, -206,
- 123, 123, 303,
- 124, 255, 199
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row259[] = {
1,
- 0, 255, -136
+ 0, 255, -208
};
static const int lexer_goto_row260[] = {
- 3,
- 0, 33, -136,
- 34, 34, 304,
- 35, 255, -204
+ 11,
+ 0, 9, 301,
+ 10, 10, 259,
+ 11, 12, 301,
+ 13, 13, 260,
+ 14, 33, 301,
+ 34, 34, 302,
+ 35, 91, 301,
+ 92, 92, 303,
+ 93, 122, 301,
+ 123, 123, 304,
+ 124, 255, 301
};
static const int lexer_goto_row261[] = {
- 3,
- 0, 122, -206,
- 123, 123, 305,
- 124, 255, 199
+ 1,
+ 0, 255, -261
};
static const int lexer_goto_row262[] = {
- 1,
- 0, 255, -140
+ 5,
+ 0, 33, -261,
+ 34, 34, 305,
+ 35, 122, -261,
+ 123, 123, 306,
+ 124, 255, 301
};
static const int lexer_goto_row263[] = {
- 1,
- 0, 255, -140
+ 3,
+ 0, 9, 307,
+ 11, 12, 307,
+ 14, 255, 307
};
static const int lexer_goto_row264[] = {
- 1,
- 0, 255, -140
+ 5,
+ 0, 33, -261,
+ 34, 34, 308,
+ 35, 122, -261,
+ 123, 123, 309,
+ 124, 255, 301
};
static const int lexer_goto_row265[] = {
- 9,
- 0, 9, 306,
- 10, 10, 307,
- 11, 12, 306,
- 13, 13, 308,
- 14, 38, 306,
- 39, 39, 309,
- 40, 91, 306,
- 92, 92, 310,
- 93, 255, 306
+ 3,
+ 0, 33, -144,
+ 34, 34, 310,
+ 35, 255, -212
};
static const int lexer_goto_row266[] = {
3,
- 0, 9, 311,
- 11, 12, 311,
- 14, 255, 311
+ 0, 122, -214,
+ 123, 123, 311,
+ 124, 255, 207
};
static const int lexer_goto_row267[] = {
1,
- 0, 255, -140
+ 0, 255, -144
};
static const int lexer_goto_row268[] = {
- 1,
- 117, 117, 312
+ 3,
+ 0, 33, -144,
+ 34, 34, 312,
+ 35, 255, -212
};
static const int lexer_goto_row269[] = {
- 1,
- 48, 122, -38
+ 3,
+ 0, 122, -214,
+ 123, 123, 313,
+ 124, 255, 207
};
static const int lexer_goto_row270[] = {
- 3,
- 48, 95, -32,
- 97, 97, 313,
- 98, 122, 89
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row271[] = {
- 3,
- 48, 115, -101,
- 116, 116, 314,
- 117, 122, 89
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row272[] = {
1,
- 48, 122, -38
+ 0, 255, -148
};
static const int lexer_goto_row273[] = {
- 1,
- 48, 122, -38
+ 9,
+ 0, 9, 314,
+ 10, 10, 315,
+ 11, 12, 314,
+ 13, 13, 316,
+ 14, 38, 314,
+ 39, 39, 317,
+ 40, 91, 314,
+ 92, 92, 318,
+ 93, 255, 314
};
static const int lexer_goto_row274[] = {
3,
- 48, 109, -43,
- 110, 110, 315,
- 111, 122, 89
+ 0, 9, 319,
+ 11, 12, 319,
+ 14, 255, 319
};
static const int lexer_goto_row275[] = {
- 3,
- 48, 109, -43,
- 110, 110, 316,
- 111, 122, 89
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row276[] = {
1,
- 48, 122, -38
+ 117, 117, 320
};
static const int lexer_goto_row277[] = {
- 3,
- 48, 100, -42,
- 101, 101, 317,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row278[] = {
3,
- 48, 115, -101,
- 116, 116, 318,
- 117, 122, 89
+ 48, 95, -35,
+ 97, 97, 321,
+ 98, 122, 96
};
static const int lexer_goto_row279[] = {
3,
- 48, 101, -39,
- 102, 102, 319,
- 103, 122, 89
+ 48, 115, -108,
+ 116, 116, 322,
+ 117, 122, 96
};
static const int lexer_goto_row280[] = {
- 3,
- 48, 99, -93,
- 100, 100, 320,
- 101, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row281[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row282[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 109, -46,
+ 110, 110, 323,
+ 111, 122, 96
};
static const int lexer_goto_row283[] = {
3,
- 48, 100, -42,
- 101, 101, 321,
- 102, 122, 89
+ 48, 109, -46,
+ 110, 110, 324,
+ 111, 122, 96
};
static const int lexer_goto_row284[] = {
- 3,
- 48, 97, -32,
- 98, 98, 322,
- 99, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row285[] = {
- 4,
- 48, 95, -32,
- 97, 102, 89,
- 103, 103, 323,
- 104, 122, 89
+ 3,
+ 48, 100, -45,
+ 101, 101, 325,
+ 102, 122, 96
};
static const int lexer_goto_row286[] = {
3,
- 48, 115, -101,
- 116, 116, 324,
- 117, 122, 89
+ 48, 115, -108,
+ 116, 116, 326,
+ 117, 122, 96
};
static const int lexer_goto_row287[] = {
3,
- 48, 98, -115,
- 99, 99, 325,
- 100, 122, 89
+ 48, 101, -42,
+ 102, 102, 327,
+ 103, 122, 96
};
static const int lexer_goto_row288[] = {
3,
- 48, 98, -115,
- 99, 99, 326,
- 100, 122, 89
+ 48, 99, -100,
+ 100, 100, 328,
+ 101, 122, 96
};
static const int lexer_goto_row289[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row290[] = {
- 3,
- 48, 109, -43,
- 110, 110, 327,
- 111, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row291[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 100, -45,
+ 101, 101, 329,
+ 102, 122, 96
};
static const int lexer_goto_row292[] = {
3,
- 48, 113, -33,
- 114, 114, 328,
- 115, 122, 89
+ 48, 97, -35,
+ 98, 98, 330,
+ 99, 122, 96
};
static const int lexer_goto_row293[] = {
- 1,
- 48, 122, -38
+ 4,
+ 48, 95, -35,
+ 97, 102, 96,
+ 103, 103, 331,
+ 104, 122, 96
};
static const int lexer_goto_row294[] = {
- 1,
- 0, 255, -253
+ 3,
+ 48, 115, -108,
+ 116, 116, 332,
+ 117, 122, 96
};
static const int lexer_goto_row295[] = {
- 1,
- 0, 255, -255
+ 3,
+ 48, 98, -122,
+ 99, 99, 333,
+ 100, 122, 96
};
static const int lexer_goto_row296[] = {
3,
- 0, 9, 329,
- 11, 12, 329,
- 14, 255, 329
+ 48, 98, -122,
+ 99, 99, 334,
+ 100, 122, 96
};
static const int lexer_goto_row297[] = {
1,
- 0, 255, -257
+ 48, 122, -41
};
static const int lexer_goto_row298[] = {
3,
- 0, 33, -253,
- 34, 34, 330,
- 35, 255, -255
+ 48, 109, -46,
+ 110, 110, 335,
+ 111, 122, 96
};
static const int lexer_goto_row299[] = {
- 3,
- 0, 122, -257,
- 123, 123, 331,
- 124, 255, 293
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row300[] = {
- 1,
- 0, 255, -200
+ 3,
+ 48, 113, -36,
+ 114, 114, 336,
+ 115, 122, 96
};
static const int lexer_goto_row301[] = {
- 3,
- 0, 33, -253,
- 34, 34, 332,
- 35, 255, -255
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row302[] = {
- 3,
- 0, 122, -257,
- 123, 123, 333,
- 124, 255, 293
+ 1,
+ 0, 255, -261
};
static const int lexer_goto_row303[] = {
1,
- 34, 34, 334
+ 0, 255, -263
};
static const int lexer_goto_row304[] = {
- 1,
- 0, 255, -262
+ 3,
+ 0, 9, 337,
+ 11, 12, 337,
+ 14, 255, 337
};
static const int lexer_goto_row305[] = {
1,
- 0, 255, -258
+ 0, 255, -265
};
static const int lexer_goto_row306[] = {
- 1,
- 123, 123, 335
+ 3,
+ 0, 33, -261,
+ 34, 34, 338,
+ 35, 255, -263
};
static const int lexer_goto_row307[] = {
- 1,
- 0, 255, -140
+ 3,
+ 0, 122, -265,
+ 123, 123, 339,
+ 124, 255, 301
};
static const int lexer_goto_row308[] = {
1,
- 0, 255, -140
+ 0, 255, -208
};
static const int lexer_goto_row309[] = {
- 1,
- 0, 255, -140
+ 3,
+ 0, 33, -261,
+ 34, 34, 340,
+ 35, 255, -263
};
-static const int lexer_goto_row311[] = {
+static const int lexer_goto_row310[] = {
3,
- 0, 9, 336,
- 11, 12, 336,
- 14, 255, 336
+ 0, 122, -265,
+ 123, 123, 341,
+ 124, 255, 301
+};
+static const int lexer_goto_row311[] = {
+ 1,
+ 34, 34, 342
};
static const int lexer_goto_row312[] = {
1,
- 0, 255, -140
+ 0, 255, -270
};
static const int lexer_goto_row313[] = {
1,
- 103, 103, 337
+ 0, 255, -266
};
static const int lexer_goto_row314[] = {
- 3,
- 48, 98, -115,
- 99, 99, 338,
- 100, 122, 89
+ 1,
+ 123, 123, 343
};
static const int lexer_goto_row315[] = {
1,
- 48, 122, -38
+ 0, 255, -148
};
static const int lexer_goto_row316[] = {
- 3,
- 48, 116, -124,
- 117, 117, 339,
- 118, 122, 89
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row317[] = {
1,
- 48, 122, -38
-};
-static const int lexer_goto_row318[] = {
- 3,
- 48, 114, -94,
- 115, 115, 340,
- 116, 122, 89
+ 0, 255, -148
};
static const int lexer_goto_row319[] = {
- 1,
- 48, 122, -38
+ 3,
+ 0, 9, 344,
+ 11, 12, 344,
+ 14, 255, 344
};
static const int lexer_goto_row320[] = {
- 3,
- 48, 95, -32,
- 97, 97, 341,
- 98, 122, 89
+ 1,
+ 0, 255, -148
};
static const int lexer_goto_row321[] = {
- 3,
- 48, 100, -42,
- 101, 101, 342,
- 102, 122, 89
+ 1,
+ 103, 103, 345
};
static const int lexer_goto_row322[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 98, -122,
+ 99, 99, 346,
+ 100, 122, 96
};
static const int lexer_goto_row323[] = {
- 3,
- 48, 107, -34,
- 108, 108, 343,
- 109, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row324[] = {
3,
- 48, 100, -42,
- 101, 101, 344,
- 102, 122, 89
+ 48, 116, -131,
+ 117, 117, 347,
+ 118, 122, 96
};
static const int lexer_goto_row325[] = {
- 3,
- 48, 100, -42,
- 101, 101, 345,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row326[] = {
3,
- 48, 115, -101,
- 116, 116, 346,
- 117, 122, 89
+ 48, 114, -101,
+ 115, 115, 348,
+ 116, 122, 96
};
static const int lexer_goto_row327[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row328[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 95, -35,
+ 97, 97, 349,
+ 98, 122, 96
};
static const int lexer_goto_row329[] = {
3,
- 48, 114, -94,
- 115, 115, 347,
- 116, 122, 89
+ 48, 100, -45,
+ 101, 101, 350,
+ 102, 122, 96
};
static const int lexer_goto_row330[] = {
1,
- 0, 255, -253
+ 48, 122, -41
};
static const int lexer_goto_row331[] = {
- 1,
- 34, 34, 348
+ 3,
+ 48, 107, -37,
+ 108, 108, 351,
+ 109, 122, 96
};
static const int lexer_goto_row332[] = {
- 1,
- 0, 255, -303
+ 3,
+ 48, 100, -45,
+ 101, 101, 352,
+ 102, 122, 96
};
static const int lexer_goto_row333[] = {
- 1,
- 0, 255, -299
+ 3,
+ 48, 100, -45,
+ 101, 101, 353,
+ 102, 122, 96
};
static const int lexer_goto_row334[] = {
- 1,
- 123, 123, 349
+ 3,
+ 48, 115, -108,
+ 116, 116, 354,
+ 117, 122, 96
};
static const int lexer_goto_row335[] = {
1,
- 34, 34, 334
+ 48, 122, -41
};
static const int lexer_goto_row336[] = {
1,
- 123, 123, 335
+ 48, 122, -41
};
static const int lexer_goto_row337[] = {
- 1,
- 0, 255, -140
+ 3,
+ 48, 114, -101,
+ 115, 115, 355,
+ 116, 122, 96
};
static const int lexer_goto_row338[] = {
1,
- 95, 95, 350
+ 0, 255, -261
};
static const int lexer_goto_row339[] = {
- 3,
- 48, 115, -101,
- 116, 116, 351,
- 117, 122, 89
+ 1,
+ 34, 34, 356
};
static const int lexer_goto_row340[] = {
- 3,
- 48, 100, -42,
- 101, 101, 352,
- 102, 122, 89
+ 1,
+ 0, 255, -311
};
static const int lexer_goto_row341[] = {
1,
- 48, 122, -38
+ 0, 255, -307
};
static const int lexer_goto_row342[] = {
- 3,
- 48, 98, -115,
- 99, 99, 353,
- 100, 122, 89
+ 1,
+ 123, 123, 357
};
static const int lexer_goto_row343[] = {
1,
- 48, 122, -38
+ 34, 34, 342
};
static const int lexer_goto_row344[] = {
- 3,
- 48, 100, -42,
- 101, 101, 354,
- 102, 122, 89
+ 1,
+ 123, 123, 343
};
static const int lexer_goto_row345[] = {
1,
- 48, 122, -38
+ 0, 255, -148
};
static const int lexer_goto_row346[] = {
1,
- 48, 122, -38
+ 95, 95, 358
};
static const int lexer_goto_row347[] = {
3,
- 48, 100, -42,
- 101, 101, 355,
- 102, 122, 89
+ 48, 115, -108,
+ 116, 116, 359,
+ 117, 122, 96
};
static const int lexer_goto_row348[] = {
3,
- 48, 95, -32,
- 97, 97, 356,
- 98, 122, 89
+ 48, 100, -45,
+ 101, 101, 360,
+ 102, 122, 96
};
static const int lexer_goto_row349[] = {
1,
- 34, 34, 348
+ 48, 122, -41
};
static const int lexer_goto_row350[] = {
- 1,
- 123, 123, 349
+ 3,
+ 48, 98, -122,
+ 99, 99, 361,
+ 100, 122, 96
};
static const int lexer_goto_row351[] = {
1,
- 95, 95, 357
+ 48, 122, -41
};
static const int lexer_goto_row352[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 100, -45,
+ 101, 101, 362,
+ 102, 122, 96
};
static const int lexer_goto_row353[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row354[] = {
- 3,
- 48, 100, -42,
- 101, 101, 358,
- 102, 122, 89
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row355[] = {
- 1,
- 48, 122, -38
+ 3,
+ 48, 100, -45,
+ 101, 101, 363,
+ 102, 122, 96
};
static const int lexer_goto_row356[] = {
3,
- 48, 99, -93,
- 100, 100, 359,
- 101, 122, 89
+ 48, 95, -35,
+ 97, 97, 364,
+ 98, 122, 96
};
static const int lexer_goto_row357[] = {
- 3,
- 48, 107, -34,
- 108, 108, 360,
- 109, 122, 89
+ 1,
+ 34, 34, 356
+};
+static const int lexer_goto_row358[] = {
+ 1,
+ 123, 123, 357
};
static const int lexer_goto_row359[] = {
1,
- 48, 122, -38
+ 95, 95, 365
};
static const int lexer_goto_row360[] = {
1,
- 48, 122, -38
+ 48, 122, -41
};
static const int lexer_goto_row361[] = {
1,
- 48, 122, -38
+ 48, 122, -41
+};
+static const int lexer_goto_row362[] = {
+ 3,
+ 48, 100, -45,
+ 101, 101, 366,
+ 102, 122, 96
+};
+static const int lexer_goto_row363[] = {
+ 1,
+ 48, 122, -41
+};
+static const int lexer_goto_row364[] = {
+ 3,
+ 48, 99, -100,
+ 100, 100, 367,
+ 101, 122, 96
+};
+static const int lexer_goto_row365[] = {
+ 3,
+ 48, 107, -37,
+ 108, 108, 368,
+ 109, 122, 96
+};
+static const int lexer_goto_row367[] = {
+ 1,
+ 48, 122, -41
+};
+static const int lexer_goto_row368[] = {
+ 1,
+ 48, 122, -41
+};
+static const int lexer_goto_row369[] = {
+ 1,
+ 48, 122, -41
};
static const int lexer_goto_row_null[] = {0};
const int* const lexer_goto_table[] = {
lexer_goto_row8,
lexer_goto_row9,
lexer_goto_row10,
+ lexer_goto_row11,
lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row13,
lexer_goto_row14,
+ lexer_goto_row15,
lexer_goto_row_null,
- lexer_goto_row16,
lexer_goto_row17,
lexer_goto_row18,
lexer_goto_row19,
lexer_goto_row20,
lexer_goto_row21,
lexer_goto_row22,
- lexer_goto_row23,
- lexer_goto_row24,
lexer_goto_row_null,
+ lexer_goto_row24,
+ lexer_goto_row25,
lexer_goto_row26,
lexer_goto_row_null,
+ lexer_goto_row28,
+ lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row29,
- lexer_goto_row30,
lexer_goto_row31,
lexer_goto_row32,
lexer_goto_row33,
lexer_goto_row48,
lexer_goto_row49,
lexer_goto_row50,
- lexer_goto_row_null,
- lexer_goto_row_null,
+ lexer_goto_row51,
+ lexer_goto_row52,
lexer_goto_row53,
lexer_goto_row54,
- lexer_goto_row55,
lexer_goto_row_null,
- lexer_goto_row57,
lexer_goto_row_null,
+ lexer_goto_row_null,
+ lexer_goto_row58,
lexer_goto_row59,
+ lexer_goto_row60,
lexer_goto_row_null,
- lexer_goto_row61,
lexer_goto_row62,
- lexer_goto_row63,
- lexer_goto_row64,
lexer_goto_row_null,
+ lexer_goto_row64,
lexer_goto_row_null,
lexer_goto_row_null,
+ lexer_goto_row67,
lexer_goto_row68,
lexer_goto_row69,
+ lexer_goto_row70,
lexer_goto_row_null,
- lexer_goto_row71,
- lexer_goto_row72,
- lexer_goto_row73,
lexer_goto_row_null,
- lexer_goto_row75,
- lexer_goto_row76,
lexer_goto_row_null,
+ lexer_goto_row74,
+ lexer_goto_row75,
lexer_goto_row_null,
+ lexer_goto_row77,
+ lexer_goto_row78,
lexer_goto_row79,
- lexer_goto_row80,
+ lexer_goto_row_null,
lexer_goto_row81,
lexer_goto_row82,
- lexer_goto_row83,
- lexer_goto_row84,
+ lexer_goto_row_null,
+ lexer_goto_row_null,
lexer_goto_row85,
lexer_goto_row86,
lexer_goto_row87,
lexer_goto_row88,
lexer_goto_row89,
- lexer_goto_row90,
+ lexer_goto_row_null,
lexer_goto_row91,
lexer_goto_row92,
lexer_goto_row93,
lexer_goto_row127,
lexer_goto_row128,
lexer_goto_row129,
- lexer_goto_row_null,
+ lexer_goto_row130,
lexer_goto_row131,
- lexer_goto_row_null,
+ lexer_goto_row132,
lexer_goto_row133,
- lexer_goto_row_null,
+ lexer_goto_row134,
lexer_goto_row135,
- lexer_goto_row136,
lexer_goto_row_null,
+ lexer_goto_row137,
lexer_goto_row_null,
lexer_goto_row139,
- lexer_goto_row140,
lexer_goto_row_null,
+ lexer_goto_row141,
lexer_goto_row_null,
lexer_goto_row143,
lexer_goto_row144,
- lexer_goto_row145,
lexer_goto_row_null,
lexer_goto_row_null,
+ lexer_goto_row147,
+ lexer_goto_row148,
+ lexer_goto_row_null,
lexer_goto_row_null,
- lexer_goto_row149,
- lexer_goto_row150,
lexer_goto_row151,
lexer_goto_row152,
lexer_goto_row153,
- lexer_goto_row154,
- lexer_goto_row155,
- lexer_goto_row156,
+ lexer_goto_row_null,
+ lexer_goto_row_null,
+ lexer_goto_row_null,
lexer_goto_row157,
lexer_goto_row158,
lexer_goto_row159,
lexer_goto_row208,
lexer_goto_row209,
lexer_goto_row210,
- lexer_goto_row_null,
+ lexer_goto_row211,
lexer_goto_row212,
lexer_goto_row213,
lexer_goto_row214,
- lexer_goto_row_null,
+ lexer_goto_row215,
lexer_goto_row216,
lexer_goto_row217,
lexer_goto_row218,
- lexer_goto_row219,
+ lexer_goto_row_null,
lexer_goto_row220,
lexer_goto_row221,
lexer_goto_row222,
- lexer_goto_row223,
+ lexer_goto_row_null,
lexer_goto_row224,
lexer_goto_row225,
lexer_goto_row226,
lexer_goto_row307,
lexer_goto_row308,
lexer_goto_row309,
- lexer_goto_row_null,
+ lexer_goto_row310,
lexer_goto_row311,
lexer_goto_row312,
lexer_goto_row313,
lexer_goto_row315,
lexer_goto_row316,
lexer_goto_row317,
- lexer_goto_row318,
+ lexer_goto_row_null,
lexer_goto_row319,
lexer_goto_row320,
lexer_goto_row321,
lexer_goto_row355,
lexer_goto_row356,
lexer_goto_row357,
- lexer_goto_row_null,
+ lexer_goto_row358,
lexer_goto_row359,
lexer_goto_row360,
- lexer_goto_row361
+ lexer_goto_row361,
+ lexer_goto_row362,
+ lexer_goto_row363,
+ lexer_goto_row364,
+ lexer_goto_row365,
+ lexer_goto_row_null,
+ lexer_goto_row367,
+ lexer_goto_row368,
+ lexer_goto_row369
};
const int lexer_accept_table[] = {
- -1,0,1,1,0,87,100,2,77,-1,53,54,74,72,57,73,71,76,92,92,58,80,60,83,88,89,55,56,-1,-1,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,100,1,79,100,95,-1,96,2,2,2,65,101,101,101,75,63,61,62,70,94,64,-1,-1,-1,59,82,81,78,84,85,89,89,89,89,-1,91,-1,90,90,90,90,90,90,47,90,90,90,16,90,90,90,90,90,90,23,90,29,15,90,90,90,90,90,90,90,31,90,90,90,90,90,90,90,90,90,90,90,90,90,100,98,-1,97,100,95,100,100,2,99,100,101,66,69,93,93,93,67,86,68,-1,91,91,91,91,-1,-1,-1,90,90,30,90,90,90,90,90,10,90,90,90,28,11,90,90,90,40,90,90,90,90,39,32,90,90,90,90,90,90,90,90,90,90,90,90,90,90,17,90,90,100,100,100,100,100,-1,-1,-1,100,100,100,-1,-1,99,-1,-1,-1,102,90,90,90,90,90,90,25,9,90,90,90,90,13,90,90,90,90,27,90,46,41,90,90,90,90,90,90,43,90,24,44,12,90,90,51,100,-1,-1,98,-1,97,-1,-1,100,-1,-1,100,100,100,-1,-1,100,-1,37,90,90,36,6,90,90,45,90,90,90,90,49,50,90,90,90,90,90,90,14,90,42,90,26,-1,-1,-1,-1,-1,-1,100,-1,-1,95,-1,-1,96,100,100,100,95,-1,100,-1,90,38,90,18,90,5,90,90,4,90,90,90,90,19,34,90,-1,98,-1,-1,97,95,96,100,-1,90,90,33,90,22,90,3,21,90,90,98,97,-1,7,35,90,48,90,90,52,8,20,9
+ -1,0,1,1,0,94,108,2,80,83,-1,53,54,77,75,57,76,74,79,100,100,58,96,87,60,90,95,97,55,56,82,-1,-1,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,81,108,84,1,86,108,103,-1,104,2,2,2,65,69,109,109,109,78,63,61,62,73,102,64,-1,-1,-1,59,89,88,85,91,92,97,97,97,97,68,-1,99,-1,98,98,98,98,98,98,47,98,98,98,16,98,98,98,98,98,98,23,98,29,15,98,98,98,98,98,98,98,31,98,98,98,98,98,98,98,98,98,98,98,98,98,67,108,106,-1,105,108,103,108,108,2,107,108,109,66,72,101,101,101,70,93,71,-1,99,99,99,99,-1,-1,-1,98,98,30,98,98,98,98,98,10,98,98,98,28,11,98,98,98,40,98,98,98,98,39,32,98,98,98,98,98,98,98,98,98,98,98,98,98,98,17,98,98,108,108,108,108,108,-1,-1,-1,108,108,108,-1,-1,107,-1,-1,-1,110,98,98,98,98,98,98,25,9,98,98,98,98,13,98,98,98,98,27,98,46,41,98,98,98,98,98,98,43,98,24,44,12,98,98,51,108,-1,-1,106,-1,105,-1,-1,108,-1,-1,108,108,108,-1,-1,108,-1,37,98,98,36,6,98,98,45,98,98,98,98,49,50,98,98,98,98,98,98,14,98,42,98,26,-1,-1,-1,-1,-1,-1,108,-1,-1,103,-1,-1,104,108,108,108,103,-1,108,-1,98,38,98,18,98,5,98,98,4,98,98,98,98,19,34,98,-1,106,-1,-1,105,103,104,108,-1,98,98,33,98,22,98,3,21,98,98,106,105,-1,7,35,98,48,98,98,52,8,20,9
};
static int parser_action_row1[] = {
- 4,
- -1, 1, 458,
+ 7,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 102, 1, 22
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row2[] = {
1,
- -1, 1, 1025
+ -1, 1, 489
};
static int parser_action_row3[] = {
1,
- -1, 1, 1023
+ -1, 1, 1088
};
static int parser_action_row4[] = {
- 2,
- -1, 3, 3,
- 102, 2, -1
-};
-static int parser_action_row5[] = {
4,
- -1, 1, 458,
+ -1, 1, 477,
0, 0, 1,
1, 0, 2,
- 102, 1, 22
+ 95, 0, 3
+};
+static int parser_action_row5[] = {
+ 2,
+ -1, 3, 4,
+ 110, 2, -1
};
static int parser_action_row6[] = {
- 1,
- -1, 1, 989
+ 7,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row7[] = {
1,
- -1, 1, 993
+ -1, 1, 1054
};
static int parser_action_row8[] = {
1,
- -1, 1, 0
+ -1, 1, 1058
};
static int parser_action_row9[] = {
1,
- -1, 1, 21
+ -1, 1, 0
};
static int parser_action_row10[] = {
1,
- -1, 1, 19
+ -1, 1, 21
};
static int parser_action_row11[] = {
1,
- -1, 1, 991
+ -1, 1, 19
};
static int parser_action_row12[] = {
- 2,
- -1, 1, 459,
- 102, 1, 23
+ 1,
+ -1, 1, 1056
};
static int parser_action_row13[] = {
- 35,
- -1, 1, 28,
- 12, 0, 25,
- 13, 0, 26,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 28, 0, 33,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55,
- 101, 0, 56
+ 2,
+ -1, 1, 486,
+ 110, 1, 23
};
static int parser_action_row14[] = {
- 2,
- -1, 1, 457,
- 1, 0, 2
+ 33,
+ -1, 1, 30,
+ 12, 0, 31,
+ 13, 0, 32,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row15[] = {
3,
-1, 3, 14,
- 0, 0, 83,
- 1, 0, 84
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row16[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 1090
};
static int parser_action_row17[] = {
4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ -1, 3, 16,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row18[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 488
};
static int parser_action_row19[] = {
- 3,
- -1, 1, 455,
+ 7,
+ -1, 1, 485,
0, 0, 1,
- 1, 0, 97
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row20[] = {
- 2,
- -1, 1, 462,
- 0, 0, 99
+ 7,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row21[] = {
- 1,
- -1, 1, 1
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row22[] = {
- 35,
- -1, 1, 28,
- 12, 0, 25,
- 13, 0, 26,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 28, 0, 33,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55,
- 101, 0, 56
+ 7,
+ -1, 1, 474,
+ 0, 0, 102,
+ 1, 0, 103,
+ 9, 1, 1051,
+ 28, 1, 1051,
+ 95, 0, 104,
+ 109, 1, 1051
};
static int parser_action_row23[] = {
- 4,
- -1, 1, 458,
+ 7,
+ -1, 1, 476,
0, 0, 1,
1, 0, 2,
- 102, 1, 22
+ 9, 1, 1053,
+ 28, 1, 1053,
+ 95, 0, 105,
+ 109, 1, 1053
};
static int parser_action_row24[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 481
};
static int parser_action_row25[] = {
4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ -1, 1, 474,
+ 0, 0, 102,
+ 1, 0, 103,
+ 95, 0, 104
};
static int parser_action_row26[] = {
- 27,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 334,
- 68, 1, 334,
- 70, 1, 334,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 4,
+ -1, 1, 476,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 105
};
static int parser_action_row27[] = {
1,
- -1, 1, 29
+ -1, 1, 1
};
static int parser_action_row28[] = {
33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 143,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ -1, 1, 30,
+ 12, 0, 31,
+ 13, 0, 32,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row29[] = {
- 2,
- -1, 3, 28,
- 89, 0, 148
+ 7,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row30[] = {
- 3,
- -1, 1, 458,
+ 7,
+ -1, 1, 485,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row31[] = {
- 3,
- -1, 1, 458,
+ 5,
+ -1, 1, 485,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row32[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 143,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 27,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 353,
+ 73, 1, 353,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row33[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 31
};
static int parser_action_row34[] = {
- 3,
+ 34,
-1, 1, 458,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 9, 0, 157,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row35[] = {
- 25,
- -1, 1, 163,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 34,
+ 97, 0, 162
};
static int parser_action_row36[] = {
- 2,
- -1, 1, 168,
- 49, 0, 178
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row37[] = {
- 2,
- -1, 1, 165,
- 49, 0, 178
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row38[] = {
- 1,
- -1, 1, 167
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 157,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row39[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 181,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row40[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row40[] = {
+ 26,
+ -1, 1, 169,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
static int parser_action_row41[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 174,
+ 49, 0, 197
};
static int parser_action_row42[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 171,
+ 49, 0, 197
};
static int parser_action_row43[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 173
};
static int parser_action_row44[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 200,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row45[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row46[] = {
2,
- -1, 3, 45,
- 11, 0, 192
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row47[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row48[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row49[] = {
2,
- -1, 3, 48,
- 58, 0, 195
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row50[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 322,
- 58, 0, 196,
- 59, 0, 197,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 322,
- 70, 1, 322,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row51[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 3, 50,
+ 11, 0, 211
};
static int parser_action_row52[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row53[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row54[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 3, 53,
+ 58, 0, 214
};
static int parser_action_row55[] = {
- 1,
- -1, 1, 376
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 341,
+ 58, 0, 215,
+ 59, 0, 216,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 341,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row56[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row57[] = {
- 1,
- -1, 1, 135
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row58[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row59[] = {
2,
- -1, 3, 58,
- 101, 0, 219
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row60[] = {
1,
- -1, 1, 139
+ -1, 1, 397
};
static int parser_action_row61[] = {
- 1,
- -1, 1, 24
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row62[] = {
- 1,
- -1, 1, 25
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row63[] = {
- 3,
- -1, 1, 154,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 24
};
static int parser_action_row64[] = {
1,
- -1, 1, 161
+ -1, 1, 25
};
static int parser_action_row65[] = {
- 1,
- -1, 1, 162
+ 4,
+ -1, 1, 160,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row66[] = {
1,
- -1, 1, 170
+ -1, 1, 167
};
static int parser_action_row67[] = {
1,
- -1, 1, 171
+ -1, 1, 168
};
static int parser_action_row68[] = {
1,
- -1, 1, 173
+ -1, 1, 176
};
static int parser_action_row69[] = {
1,
- -1, 1, 172
+ -1, 1, 177
};
static int parser_action_row70[] = {
1,
- -1, 1, 174
+ -1, 1, 179
};
static int parser_action_row71[] = {
1,
- -1, 1, 175
+ -1, 1, 178
};
static int parser_action_row72[] = {
1,
- -1, 1, 176
+ -1, 1, 180
};
static int parser_action_row73[] = {
- 4,
- -1, 3, 72,
- 54, 0, 223,
- 68, 0, 224,
- 70, 0, 225
+ 1,
+ -1, 1, 181
};
static int parser_action_row74[] = {
1,
- -1, 1, 310
+ -1, 1, 182
};
static int parser_action_row75[] = {
- 1,
- -1, 1, 358
+ 3,
+ -1, 3, 74,
+ 54, 0, 244,
+ 73, 0, 245
};
static int parser_action_row76[] = {
1,
- -1, 1, 357
+ -1, 1, 329
};
static int parser_action_row77[] = {
- 3,
- -1, 3, 76,
- 96, 0, 227,
- 97, 0, 228
+ 1,
+ -1, 1, 379
};
static int parser_action_row78[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 378
};
static int parser_action_row79[] = {
3,
-1, 3, 78,
- 41, 0, 234,
- 90, 0, 235
+ 104, 0, 247,
+ 105, 0, 248
};
static int parser_action_row80[] = {
- 1,
- -1, 1, 1021
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row81[] = {
3,
- -1, 1, 437,
- 12, 0, 236,
- 89, 0, 237
+ -1, 3, 80,
+ 41, 0, 254,
+ 98, 0, 255
};
static int parser_action_row82[] = {
- 4,
- -1, 1, 439,
- 12, 0, 238,
- 88, 0, 48,
- 89, 0, 239
+ 1,
+ -1, 1, 1086
};
static int parser_action_row83[] = {
3,
- -1, 1, 456,
- 0, 0, 1,
- 1, 0, 97
+ -1, 1, 455,
+ 12, 0, 256,
+ 97, 0, 257
};
static int parser_action_row84[] = {
- 1,
- -1, 1, 454
+ 4,
+ -1, 1, 457,
+ 12, 0, 258,
+ 96, 0, 53,
+ 97, 0, 259
};
static int parser_action_row85[] = {
- 1,
- -1, 1, 453
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row86[] = {
1,
- -1, 1, 20
+ -1, 1, 141
};
static int parser_action_row87[] = {
- 1,
- -1, 1, 990
+ 2,
+ -1, 3, 86,
+ 109, 0, 263
};
static int parser_action_row88[] = {
1,
- -1, 1, 2
+ -1, 1, 145
};
static int parser_action_row89[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 472
};
static int parser_action_row90[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 471
};
static int parser_action_row91[] = {
1,
- -1, 1, 4
+ -1, 1, 473
};
static int parser_action_row92[] = {
1,
- -1, 1, 992
+ -1, 1, 20
};
static int parser_action_row93[] = {
- 35,
- -1, 1, 28,
- 12, 0, 25,
- 13, 0, 26,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 28, 0, 33,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55,
- 101, 0, 56
+ 1,
+ -1, 1, 1055
};
static int parser_action_row94[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 2
};
static int parser_action_row95[] = {
- 1,
- -1, 1, 994
+ 7,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row96[] = {
- 1,
- -1, 1, 8
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row97[] = {
- 33,
- -1, 1, 28,
- 12, 0, 25,
- 13, 0, 26,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 4
};
static int parser_action_row98[] = {
1,
- -1, 1, 1024
+ -1, 1, 1057
};
static int parser_action_row99[] = {
- 2,
- -1, 1, 460,
- 0, 0, 99
+ 33,
+ -1, 1, 30,
+ 12, 0, 31,
+ 13, 0, 32,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row100[] = {
- 1,
- -1, 1, 1026
-};
-static int parser_action_row101[] = {
5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
+};
+static int parser_action_row101[] = {
+ 1,
+ -1, 1, 1059
};
static int parser_action_row102[] = {
1,
- -1, 1, 3
+ -1, 1, 8
};
static int parser_action_row103[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1,
+ -1, 1, 490
};
static int parser_action_row104[] = {
+ 1,
+ -1, 1, 1089
+};
+static int parser_action_row105[] = {
4,
- -1, 1, 458,
+ -1, 1, 479,
0, 0, 1,
1, 0, 2,
- 102, 1, 22
-};
-static int parser_action_row105[] = {
- 1,
- -1, 1, 5
+ 95, 0, 3
};
static int parser_action_row106[] = {
4,
- -1, 1, 458,
+ -1, 1, 478,
0, 0, 1,
1, 0, 2,
- 102, 1, 22
+ 95, 0, 3
};
static int parser_action_row107[] = {
1,
- -1, 1, 9
+ -1, 1, 1091
};
static int parser_action_row108[] = {
- 2,
- -1, 1, 718,
- 52, 0, 253
+ 7,
+ -1, 1, 475,
+ 0, 0, 102,
+ 1, 0, 103,
+ 9, 1, 1052,
+ 28, 1, 1052,
+ 95, 0, 271,
+ 109, 1, 1052
};
static int parser_action_row109[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 4,
+ -1, 1, 475,
+ 0, 0, 102,
+ 1, 0, 103,
+ 95, 0, 271
};
static int parser_action_row110[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row111[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 3
};
static int parser_action_row112[] = {
- 3,
- -1, 1, 458,
+ 7,
+ -1, 1, 485,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 28, 1, 487,
+ 95, 0, 3,
+ 109, 1, 487,
+ 110, 1, 22
};
static int parser_action_row113[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row114[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 5
};
static int parser_action_row115[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row116[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 9
};
static int parser_action_row117[] = {
- 15,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 263,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 1, 768,
+ 52, 0, 277
};
static int parser_action_row118[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row119[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row120[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row121[] = {
3,
- -1, 1, 706,
- 52, 0, 253,
- 58, 0, 196
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row122[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row123[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row124[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row125[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row126[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 15,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 287,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row127[] = {
- 1,
- -1, 1, 741
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row128[] = {
- 1,
- -1, 1, 333
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row129[] = {
- 1,
- -1, 1, 187
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row130[] = {
- 3,
- -1, 3, 129,
- 41, 0, 275,
- 90, 0, 276
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row131[] = {
- 2,
- -1, 1, 437,
- 89, 0, 277
+ 3,
+ -1, 1, 756,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row132[] = {
- 1,
- -1, 1, 421
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row133[] = {
- 4,
- -1, 1, 656,
- 29, 0, 278,
- 30, 0, 279,
- 32, 0, 280
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row134[] = {
- 1,
- -1, 1, 658
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row135[] = {
- 3,
- -1, 1, 663,
- 81, 0, 281,
- 84, 0, 282
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row136[] = {
- 11,
- -1, 1, 665,
- 39, 0, 283,
- 71, 0, 284,
- 72, 0, 285,
- 77, 0, 286,
- 78, 0, 287,
- 79, 0, 288,
- 80, 0, 289,
- 82, 0, 290,
- 83, 0, 291,
- 85, 0, 292
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row137[] = {
- 4,
- -1, 1, 676,
- 73, 0, 293,
- 75, 0, 294,
- 76, 0, 295
+ 1,
+ -1, 1, 793
};
static int parser_action_row138[] = {
1,
- -1, 1, 679
+ -1, 1, 352
};
static int parser_action_row139[] = {
- 2,
- -1, 1, 683,
- 74, 0, 296
+ 1,
+ -1, 1, 193
};
static int parser_action_row140[] = {
- 1,
- -1, 1, 685
+ 3,
+ -1, 3, 139,
+ 41, 0, 300,
+ 98, 0, 301
};
static int parser_action_row141[] = {
- 4,
- -1, 1, 689,
- 54, 0, 223,
- 68, 0, 297,
- 70, 0, 298
+ 2,
+ -1, 1, 455,
+ 97, 0, 302
};
static int parser_action_row142[] = {
1,
- -1, 1, 694
+ -1, 1, 440
};
static int parser_action_row143[] = {
- 3,
- -1, 1, 439,
- 88, 0, 48,
- 89, 0, 300
+ 4,
+ -1, 1, 698,
+ 29, 0, 303,
+ 30, 0, 304,
+ 32, 0, 305
};
static int parser_action_row144[] = {
- 2,
- -1, 1, 152,
- 49, 1, 919
+ 1,
+ -1, 1, 700
};
static int parser_action_row145[] = {
1,
- -1, 1, 248
+ -1, 1, 705
};
static int parser_action_row146[] = {
- 1,
- -1, 1, 153
+ 10,
+ -1, 1, 707,
+ 39, 0, 306,
+ 80, 0, 307,
+ 84, 0, 308,
+ 85, 0, 309,
+ 86, 0, 310,
+ 87, 0, 311,
+ 89, 0, 312,
+ 90, 0, 313,
+ 92, 0, 314
};
static int parser_action_row147[] = {
- 31,
- -1, 1, 440,
- 9, 0, 302,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 716,
+ 81, 0, 315
};
static int parser_action_row148[] = {
2,
- -1, 3, 147,
- 49, 0, 178
+ -1, 1, 718,
+ 82, 0, 316
};
static int parser_action_row149[] = {
3,
- -1, 1, 149,
- 57, 0, 306,
- 87, 0, 185
+ -1, 1, 720,
+ 88, 0, 317,
+ 91, 0, 318
};
static int parser_action_row150[] = {
- 1,
- -1, 1, 459
+ 3,
+ -1, 1, 722,
+ 74, 0, 319,
+ 75, 0, 320
};
static int parser_action_row151[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 1, 725,
+ 76, 0, 321,
+ 78, 0, 322,
+ 79, 0, 323
};
static int parser_action_row152[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 728
};
static int parser_action_row153[] = {
- 1,
- -1, 1, 257
+ 2,
+ -1, 1, 732,
+ 77, 0, 324
};
static int parser_action_row154[] = {
- 2,
- -1, 3, 153,
- 49, 0, 178
+ 1,
+ -1, 1, 734
};
static int parser_action_row155[] = {
3,
- -1, 3, 154,
- 52, 0, 312,
- 89, 0, 313
+ -1, 1, 739,
+ 54, 0, 244,
+ 73, 0, 325
};
static int parser_action_row156[] = {
- 2,
- -1, 3, 155,
- 94, 0, 316
+ 1,
+ -1, 1, 744
};
static int parser_action_row157[] = {
- 2,
- -1, 1, 334,
- 52, 0, 253
+ 3,
+ -1, 1, 457,
+ 96, 0, 53,
+ 97, 0, 327
};
static int parser_action_row158[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 158,
+ 49, 1, 981
};
static int parser_action_row159[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 257
};
static int parser_action_row160[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 159
};
static int parser_action_row161[] = {
- 3,
+ 31,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 9, 0, 329,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row162[] = {
- 17,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 161,
+ 49, 0, 197
};
static int parser_action_row163[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 155,
+ 57, 0, 333,
+ 94, 0, 204
};
static int parser_action_row164[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row165[] = {
3,
- -1, 1, 322,
- 52, 0, 253,
- 58, 0, 196
+ -1, 1, 1051,
+ 0, 0, 102,
+ 1, 0, 103
};
static int parser_action_row166[] = {
- 1,
- -1, 1, 164
+ 3,
+ -1, 1, 1053,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row167[] = {
- 4,
- -1, 1, 272,
- 29, 0, 326,
- 30, 0, 327,
- 32, 0, 328
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row168[] = {
1,
- -1, 1, 274
+ -1, 1, 268
};
static int parser_action_row169[] = {
- 3,
- -1, 1, 279,
- 81, 0, 329,
- 84, 0, 330
+ 2,
+ -1, 3, 168,
+ 49, 0, 197
};
static int parser_action_row170[] = {
- 11,
- -1, 1, 281,
- 39, 0, 331,
- 71, 0, 332,
- 72, 0, 333,
- 77, 0, 334,
- 78, 0, 335,
- 79, 0, 336,
- 80, 0, 337,
- 82, 0, 338,
- 83, 0, 339,
- 85, 0, 340
+ 3,
+ -1, 3, 169,
+ 52, 0, 340,
+ 97, 0, 341
};
static int parser_action_row171[] = {
- 4,
- -1, 1, 292,
- 73, 0, 341,
- 75, 0, 342,
- 76, 0, 343
+ 2,
+ -1, 1, 353,
+ 52, 0, 277
};
static int parser_action_row172[] = {
- 1,
- -1, 1, 295
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row173[] = {
- 2,
- -1, 1, 299,
- 74, 0, 344
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row174[] = {
- 1,
- -1, 1, 301
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row175[] = {
- 4,
- -1, 1, 305,
- 54, 0, 223,
- 68, 0, 224,
- 70, 0, 345
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row176[] = {
- 3,
- -1, 3, 175,
- 41, 0, 347,
- 90, 0, 348
+ 17,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row177[] = {
- 2,
- -1, 1, 437,
- 89, 0, 349
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row178[] = {
- 3,
- -1, 1, 439,
- 88, 0, 48,
- 89, 0, 350
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row179[] = {
- 2,
- -1, 1, 195,
- 89, 0, 352
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row180[] = {
- 1,
- -1, 1, 169
+ 3,
+ -1, 1, 341,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row181[] = {
1,
- -1, 1, 166
+ -1, 1, 170
};
static int parser_action_row182[] = {
4,
- -1, 1, 322,
- 52, 0, 253,
- 57, 0, 353,
- 58, 0, 196
+ -1, 1, 283,
+ 29, 0, 354,
+ 30, 0, 355,
+ 32, 0, 356
};
static int parser_action_row183[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 285
};
static int parser_action_row184[] = {
- 2,
- -1, 1, 269,
- 24, 0, 355
+ 1,
+ -1, 1, 290
};
static int parser_action_row185[] = {
- 3,
- -1, 3, 184,
- 47, 0, 356,
- 88, 0, 357
+ 10,
+ -1, 1, 292,
+ 39, 0, 357,
+ 80, 0, 358,
+ 84, 0, 359,
+ 85, 0, 360,
+ 86, 0, 361,
+ 87, 0, 362,
+ 89, 0, 363,
+ 90, 0, 364,
+ 92, 0, 365
};
static int parser_action_row186[] = {
- 3,
- -1, 1, 28,
- 13, 0, 26,
- 52, 0, 359
+ 2,
+ -1, 1, 301,
+ 81, 0, 366
};
static int parser_action_row187[] = {
- 1,
- -1, 1, 383
+ 2,
+ -1, 1, 303,
+ 82, 0, 367
};
static int parser_action_row188[] = {
- 1,
- -1, 1, 348
+ 3,
+ -1, 1, 305,
+ 88, 0, 368,
+ 91, 0, 369
};
static int parser_action_row189[] = {
- 1,
- -1, 1, 349
+ 3,
+ -1, 1, 307,
+ 74, 0, 370,
+ 75, 0, 371
};
static int parser_action_row190[] = {
- 1,
- -1, 1, 350
+ 4,
+ -1, 1, 310,
+ 76, 0, 372,
+ 78, 0, 373,
+ 79, 0, 374
};
static int parser_action_row191[] = {
1,
- -1, 1, 351
+ -1, 1, 313
};
static int parser_action_row192[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 362,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 317,
+ 77, 0, 375
};
static int parser_action_row193[] = {
- 3,
- -1, 3, 192,
- 47, 0, 365,
- 88, 0, 366
+ 1,
+ -1, 1, 319
};
static int parser_action_row194[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 324,
+ 54, 0, 244,
+ 73, 0, 376
};
static int parser_action_row195[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 411,
- 27, 0, 412,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 194,
+ 41, 0, 378,
+ 98, 0, 379
};
static int parser_action_row196[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 455,
+ 97, 0, 380
};
static int parser_action_row197[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 457,
+ 96, 0, 53,
+ 97, 0, 381
};
static int parser_action_row198[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 201,
+ 97, 0, 383
};
static int parser_action_row199[] = {
1,
- -1, 1, 239
+ -1, 1, 175
};
static int parser_action_row200[] = {
1,
- -1, 1, 240
+ -1, 1, 172
};
static int parser_action_row201[] = {
- 1,
- -1, 1, 241
+ 4,
+ -1, 1, 341,
+ 52, 0, 277,
+ 57, 0, 384,
+ 58, 0, 215
};
static int parser_action_row202[] = {
- 1,
- -1, 1, 242
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row203[] = {
- 1,
- -1, 1, 243
+ 2,
+ -1, 1, 280,
+ 24, 0, 386
};
static int parser_action_row204[] = {
- 1,
- -1, 1, 244
+ 3,
+ -1, 3, 203,
+ 47, 0, 387,
+ 96, 0, 388
};
static int parser_action_row205[] = {
- 1,
- -1, 1, 245
+ 3,
+ -1, 1, 30,
+ 13, 0, 32,
+ 52, 0, 390
};
static int parser_action_row206[] = {
1,
- -1, 1, 246
+ -1, 1, 404
};
static int parser_action_row207[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 369
};
static int parser_action_row208[] = {
- 10,
- -1, 1, 321,
- 59, 0, 420,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 370
};
static int parser_action_row209[] = {
1,
- -1, 1, 181
+ -1, 1, 371
};
static int parser_action_row210[] = {
1,
- -1, 1, 352
+ -1, 1, 372
};
static int parser_action_row211[] = {
- 1,
- -1, 1, 353
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 393,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row212[] = {
- 1,
- -1, 1, 354
+ 3,
+ -1, 3, 211,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row213[] = {
- 1,
- -1, 1, 356
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row214[] = {
- 1,
- -1, 1, 355
+ 25,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 446,
+ 27, 0, 447,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row215[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row216[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row217[] = {
- 3,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row218[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 245
};
static int parser_action_row219[] = {
- 9,
- -1, 3, 218,
- 3, 0, 426,
- 4, 0, 427,
- 5, 0, 428,
- 6, 0, 429,
- 7, 0, 430,
- 8, 0, 431,
- 10, 0, 432,
- 17, 0, 433
+ 1,
+ -1, 1, 246
};
static int parser_action_row220[] = {
1,
- -1, 1, 136
+ -1, 1, 247
};
static int parser_action_row221[] = {
1,
- -1, 1, 1005
+ -1, 1, 248
};
static int parser_action_row222[] = {
- 32,
- -1, 1, 156,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 249
};
static int parser_action_row223[] = {
- 3,
- -1, 1, 155,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 250
};
static int parser_action_row224[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 251
};
static int parser_action_row225[] = {
1,
- -1, 1, 347
+ -1, 1, 252
};
static int parser_action_row226[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 253
};
static int parser_action_row227[] = {
- 10,
- -1, 1, 335,
- 59, 0, 440,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 254
};
static int parser_action_row228[] = {
1,
- -1, 1, 379
+ -1, 1, 255
};
static int parser_action_row229[] = {
- 1,
- -1, 1, 380
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row230[] = {
- 1,
- -1, 1, 1011
+ 13,
+ -1, 1, 340,
+ 59, 0, 455,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row231[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 187
};
static int parser_action_row232[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 373
};
static int parser_action_row233[] = {
- 3,
- -1, 3, 232,
- 96, 0, 227,
- 97, 0, 228
+ 1,
+ -1, 1, 374
};
static int parser_action_row234[] = {
- 25,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 96, 1, 375,
- 97, 1, 375,
- 98, 0, 55
+ 1,
+ -1, 1, 375
};
static int parser_action_row235[] = {
- 27,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 330,
- 68, 1, 330,
- 70, 1, 330,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 377
};
static int parser_action_row236[] = {
- 10,
- -1, 1, 312,
- 59, 0, 449,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 376
};
static int parser_action_row237[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row238[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 324,
- 59, 0, 453,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 324,
- 70, 1, 324,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row239[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row240[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 328,
- 58, 0, 196,
- 59, 0, 458,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 328,
- 70, 1, 328,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row241[] = {
- 1,
- -1, 1, 1022
+ 9,
+ -1, 3, 240,
+ 3, 0, 461,
+ 4, 0, 462,
+ 5, 0, 463,
+ 6, 0, 464,
+ 7, 0, 465,
+ 8, 0, 466,
+ 10, 0, 467,
+ 17, 0, 468
};
static int parser_action_row242[] = {
- 3,
- -1, 1, 438,
- 12, 0, 462,
- 89, 0, 463
+ 1,
+ -1, 1, 1072
};
static int parser_action_row243[] = {
- 2,
- -1, 1, 461,
- 0, 0, 99
+ 32,
+ -1, 1, 162,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row244[] = {
- 1,
- -1, 1, 6
-};
-static int parser_action_row245[] = {
4,
- -1, 1, 458,
+ -1, 1, 161,
0, 0, 1,
1, 0, 2,
- 102, 1, 22
+ 95, 0, 3
+};
+static int parser_action_row245[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row246[] = {
- 1,
- -1, 1, 10
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row247[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ 13,
+ -1, 1, 354,
+ 59, 0, 475,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row248[] = {
1,
- -1, 1, 12
+ -1, 1, 400
};
static int parser_action_row249[] = {
- 8,
- -1, 3, 248,
- 4, 0, 427,
- 5, 0, 428,
- 6, 0, 429,
- 7, 0, 430,
- 8, 0, 431,
- 10, 0, 432,
- 17, 0, 433
+ 1,
+ -1, 1, 401
};
static int parser_action_row250[] = {
1,
- -1, 1, 7
+ -1, 1, 1078
};
static int parser_action_row251[] = {
- 4,
- -1, 1, 458,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 102, 1, 22
+ 1, 0, 2
};
static int parser_action_row252[] = {
- 1,
- -1, 1, 11
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row253[] = {
- 1,
- -1, 1, 13
+ 3,
+ -1, 3, 252,
+ 104, 0, 247,
+ 105, 0, 248
};
static int parser_action_row254[] = {
- 3,
+ 26,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 104, 1, 396,
+ 105, 1, 396,
+ 106, 0, 60
};
static int parser_action_row255[] = {
- 1,
- -1, 1, 717
+ 27,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 349,
+ 73, 1, 349,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row256[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 13,
+ -1, 1, 331,
+ 59, 0, 484,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row257[] = {
- 20,
- -1, 1, 440,
- 12, 0, 107,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row258[] = {
- 3,
- -1, 3, 257,
- 47, 0, 356,
- 88, 0, 357
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 343,
+ 59, 0, 488,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 343,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row259[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row260[] = {
- 1,
- -1, 1, 732
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 347,
+ 58, 0, 215,
+ 59, 0, 493,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 347,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row261[] = {
1,
- -1, 1, 733
+ -1, 1, 1087
};
static int parser_action_row262[] = {
- 1,
- -1, 1, 734
+ 3,
+ -1, 1, 456,
+ 12, 0, 497,
+ 97, 0, 498
};
static int parser_action_row263[] = {
- 1,
- -1, 1, 735
+ 2,
+ -1, 3, 262,
+ 102, 0, 499
};
static int parser_action_row264[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 142
};
static int parser_action_row265[] = {
- 3,
- -1, 3, 264,
- 41, 0, 275,
- 90, 0, 473
+ 1,
+ -1, 1, 6
};
static int parser_action_row266[] = {
- 4,
- -1, 3, 265,
- 54, 0, 223,
- 68, 0, 297,
- 70, 0, 474
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row267[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 53, 0, 475,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 10
};
static int parser_action_row268[] = {
- 1,
- -1, 1, 687
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row269[] = {
1,
- -1, 1, 686
+ -1, 1, 12
};
static int parser_action_row270[] = {
1,
- -1, 1, 705
+ -1, 1, 483
};
static int parser_action_row271[] = {
1,
- -1, 1, 736
+ -1, 1, 482
};
static int parser_action_row272[] = {
- 1,
- -1, 1, 737
-};
-static int parser_action_row273[] = {
- 1,
- -1, 1, 738
+ 4,
+ -1, 1, 480,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
+};
+static int parser_action_row273[] = {
+ 8,
+ -1, 3, 272,
+ 4, 0, 462,
+ 5, 0, 463,
+ 6, 0, 464,
+ 7, 0, 465,
+ 8, 0, 466,
+ 10, 0, 467,
+ 17, 0, 468
};
static int parser_action_row274[] = {
1,
- -1, 1, 740
+ -1, 1, 7
};
static int parser_action_row275[] = {
- 1,
- -1, 1, 739
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3,
+ 110, 1, 22
};
static int parser_action_row276[] = {
- 2,
- -1, 1, 714,
- 52, 0, 253
+ 1,
+ -1, 1, 11
};
static int parser_action_row277[] = {
1,
- -1, 1, 696
+ -1, 1, 13
};
static int parser_action_row278[] = {
- 2,
- -1, 1, 708,
- 52, 0, 253
-};
-static int parser_action_row279[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row279[] = {
+ 1,
+ -1, 1, 767
+};
static int parser_action_row280[] = {
- 4,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 24, 0, 481
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row281[] = {
- 3,
+ 21,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 116,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row282[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 281,
+ 47, 0, 387,
+ 96, 0, 388
};
static int parser_action_row283[] = {
- 3,
+ 22,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row284[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 784
};
static int parser_action_row285[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 785
};
static int parser_action_row286[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 786
};
static int parser_action_row287[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 787
};
static int parser_action_row288[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row289[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 288,
+ 41, 0, 300,
+ 98, 0, 510
};
static int parser_action_row290[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 289,
+ 54, 0, 244,
+ 73, 0, 511
};
static int parser_action_row291[] = {
- 3,
+ 25,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 53, 0, 512,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 513,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row292[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 736
};
static int parser_action_row293[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 735
};
static int parser_action_row294[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 737
};
static int parser_action_row295[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 755
};
static int parser_action_row296[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 788
};
static int parser_action_row297[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 789
};
static int parser_action_row298[] = {
1,
- -1, 1, 731
+ -1, 1, 790
};
static int parser_action_row299[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 792
};
static int parser_action_row300[] = {
1,
- -1, 1, 719
+ -1, 1, 791
};
static int parser_action_row301[] = {
- 3,
- -1, 1, 712,
- 52, 0, 253,
- 58, 0, 196
+ 2,
+ -1, 1, 764,
+ 52, 0, 277
};
static int parser_action_row302[] = {
- 2,
- -1, 1, 438,
- 89, 0, 502
+ 1,
+ -1, 1, 746
};
static int parser_action_row303[] = {
2,
- -1, 1, 151,
- 49, 1, 918
+ -1, 1, 758,
+ 52, 0, 277
};
static int parser_action_row304[] = {
- 2,
- -1, 1, 150,
- 49, 1, 917
-};
-static int parser_action_row305[] = {
3,
- -1, 3, 304,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row305[] = {
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 24, 0, 520
+};
static int parser_action_row306[] = {
- 1,
- -1, 1, 247
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row307[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row308[] = {
- 2,
- -1, 1, 197,
- 59, 0, 506
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row309[] = {
- 2,
- -1, 1, 149,
- 57, 0, 306
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row310[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row311[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row312[] = {
- 1,
- -1, 1, 256
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row313[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row314[] = {
- 1,
- -1, 1, 431
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row315[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row316[] = {
- 2,
- -1, 1, 430,
- 56, 0, 512
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row317[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row318[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row319[] = {
- 22,
- -1, 1, 440,
- 12, 0, 156,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row320[] = {
3,
- -1, 3, 319,
- 47, 0, 356,
- 88, 0, 357
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row321[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row322[] = {
- 4,
- -1, 3, 321,
- 54, 0, 223,
- 68, 0, 224,
- 70, 0, 518
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row323[] = {
3,
- -1, 3, 322,
- 41, 0, 347,
- 90, 0, 519
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row324[] = {
- 1,
- -1, 1, 303
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row325[] = {
- 1,
- -1, 1, 302
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row326[] = {
- 1,
- -1, 1, 321
-};
-static int parser_action_row327[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row327[] = {
+ 1,
+ -1, 1, 769
+};
static int parser_action_row328[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 24, 0, 521
+ 3,
+ -1, 1, 762,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row329[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 456,
+ 97, 0, 544
};
static int parser_action_row330[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 157,
+ 49, 1, 980
};
static int parser_action_row331[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 156,
+ 49, 1, 979
};
static int parser_action_row332[] = {
- 3,
- -1, 1, 458,
+ 4,
+ -1, 3, 331,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row333[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 256
};
static int parser_action_row334[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row335[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 203,
+ 59, 0, 548
};
static int parser_action_row336[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 155,
+ 57, 0, 333
};
static int parser_action_row337[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row338[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 1052,
+ 0, 0, 102,
+ 1, 0, 103
};
static int parser_action_row339[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row340[] = {
+ 1,
+ -1, 1, 267
+};
+static int parser_action_row341[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row341[] = {
- 3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row342[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 449
};
static int parser_action_row343[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row344[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 448,
+ 56, 0, 554
};
static int parser_action_row345[] = {
- 3,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row346[] = {
- 3,
+ 23,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row347[] = {
- 1,
- -1, 1, 335
+ 3,
+ -1, 3, 346,
+ 47, 0, 387,
+ 96, 0, 388
};
static int parser_action_row348[] = {
- 2,
- -1, 1, 330,
- 52, 0, 253
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row349[] = {
- 1,
- -1, 1, 312
+ 3,
+ -1, 3, 348,
+ 54, 0, 244,
+ 73, 0, 559
};
static int parser_action_row350[] = {
- 2,
- -1, 1, 324,
- 52, 0, 253
+ 3,
+ -1, 3, 349,
+ 41, 0, 378,
+ 98, 0, 560
};
static int parser_action_row351[] = {
- 3,
- -1, 1, 328,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 321
};
static int parser_action_row352[] = {
- 2,
- -1, 1, 438,
- 89, 0, 543
+ 1,
+ -1, 1, 320
};
static int parser_action_row353[] = {
1,
- -1, 1, 196
+ -1, 1, 322
};
static int parser_action_row354[] = {
1,
- -1, 1, 271
+ -1, 1, 340
};
static int parser_action_row355[] = {
- 2,
- -1, 1, 270,
- 24, 0, 544
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row356[] = {
- 33,
- -1, 1, 440,
+ 4,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24, 0, 562
};
static int parser_action_row357[] = {
- 2,
- -1, 3, 356,
- 88, 0, 548
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row358[] = {
3,
- -1, 1, 745,
- 54, 0, 549,
- 87, 0, 550
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row359[] = {
- 2,
- -1, 3, 358,
- 70, 0, 553
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row360[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row361[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row362[] = {
- 1,
- -1, 1, 381
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row363[] = {
- 6,
- -1, 1, 322,
- 52, 0, 253,
- 57, 0, 306,
- 58, 0, 196,
- 59, 1, 149,
- 87, 0, 185
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row364[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row365[] = {
- 1,
- -1, 1, 266
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row366[] = {
- 2,
- -1, 3, 365,
- 88, 0, 559
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row367[] = {
3,
- -1, 1, 384,
- 54, 0, 560,
- 87, 0, 185
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row368[] = {
- 2,
- -1, 3, 367,
- 57, 0, 562
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row369[] = {
- 25,
- -1, 1, 925,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row370[] = {
- 2,
- -1, 1, 930,
- 49, 0, 178
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row371[] = {
- 2,
- -1, 1, 927,
- 49, 0, 178
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row372[] = {
- 1,
- -1, 1, 929
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row373[] = {
- 2,
- -1, 3, 372,
- 11, 0, 566
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row374[] = {
- 4,
- -1, 1, 458,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 55, 0, 567
+ 1, 0, 2
};
static int parser_action_row375[] = {
- 23,
- -1, 1, 470,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row376[] = {
- 23,
- -1, 1, 471,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row377[] = {
- 1,
- -1, 1, 472
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row378[] = {
1,
- -1, 1, 473
+ -1, 1, 354
};
static int parser_action_row379[] = {
- 1,
- -1, 1, 474
+ 2,
+ -1, 1, 349,
+ 52, 0, 277
};
static int parser_action_row380[] = {
1,
- -1, 1, 475
+ -1, 1, 331
};
static int parser_action_row381[] = {
- 1,
- -1, 1, 476
+ 2,
+ -1, 1, 343,
+ 52, 0, 277
};
static int parser_action_row382[] = {
- 1,
- -1, 1, 477
+ 3,
+ -1, 1, 347,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row383[] = {
- 1,
- -1, 1, 480
+ 2,
+ -1, 1, 456,
+ 97, 0, 587
};
static int parser_action_row384[] = {
1,
- -1, 1, 478
+ -1, 1, 202
};
static int parser_action_row385[] = {
1,
- -1, 1, 482
+ -1, 1, 282
};
static int parser_action_row386[] = {
- 1,
- -1, 1, 481
+ 2,
+ -1, 1, 281,
+ 24, 0, 588
};
static int parser_action_row387[] = {
- 1,
- -1, 1, 479
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row388[] = {
- 1,
- -1, 1, 483
+ 2,
+ -1, 3, 387,
+ 96, 0, 592
};
static int parser_action_row389[] = {
- 1,
- -1, 1, 485
+ 3,
+ -1, 1, 797,
+ 54, 0, 593,
+ 94, 0, 594
};
static int parser_action_row390[] = {
- 4,
- -1, 1, 384,
- 54, 0, 560,
- 58, 0, 195,
- 87, 0, 185
+ 2,
+ -1, 3, 389,
+ 73, 0, 597
};
static int parser_action_row391[] = {
- 12,
- -1, 1, 322,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 568,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row392[] = {
- 1,
- -1, 1, 409
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row393[] = {
1,
- -1, 1, 923
+ -1, 1, 402
};
static int parser_action_row394[] = {
- 1,
- -1, 1, 924
+ 6,
+ -1, 1, 341,
+ 52, 0, 277,
+ 57, 0, 333,
+ 58, 0, 215,
+ 59, 1, 155,
+ 94, 0, 204
};
static int parser_action_row395[] = {
- 1,
- -1, 1, 932
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row396[] = {
1,
- -1, 1, 934
+ -1, 1, 277
};
static int parser_action_row397[] = {
- 1,
- -1, 1, 933
+ 2,
+ -1, 3, 396,
+ 96, 0, 603
};
static int parser_action_row398[] = {
- 1,
- -1, 1, 935
+ 3,
+ -1, 1, 405,
+ 54, 0, 604,
+ 94, 0, 204
};
static int parser_action_row399[] = {
- 1,
- -1, 1, 936
+ 2,
+ -1, 3, 398,
+ 57, 0, 606
};
static int parser_action_row400[] = {
- 1,
- -1, 1, 937
+ 26,
+ -1, 1, 987,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row401[] = {
- 1,
- -1, 1, 410
+ 2,
+ -1, 1, 992,
+ 49, 0, 197
};
static int parser_action_row402[] = {
- 4,
- -1, 1, 305,
- 54, 0, 223,
- 68, 0, 224,
- 70, 0, 569
+ 2,
+ -1, 1, 989,
+ 49, 0, 197
};
static int parser_action_row403[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 991
};
static int parser_action_row404[] = {
- 1,
- -1, 1, 414
+ 2,
+ -1, 3, 403,
+ 11, 0, 610
};
static int parser_action_row405[] = {
4,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2,
- 56, 0, 571
+ 55, 0, 611
};
static int parser_action_row406[] = {
- 3,
- -1, 3, 405,
- 41, 0, 347,
- 90, 0, 235
+ 24,
+ -1, 1, 498,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row407[] = {
- 18,
- -1, 1, 437,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 578
+ 24,
+ -1, 1, 499,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row408[] = {
1,
- -1, 1, 488
+ -1, 1, 500
};
static int parser_action_row409[] = {
1,
- -1, 1, 413
+ -1, 1, 501
};
static int parser_action_row410[] = {
1,
- -1, 1, 411
+ -1, 1, 502
};
static int parser_action_row411[] = {
- 19,
- -1, 1, 439,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 88, 0, 48,
- 89, 0, 580
+ 1,
+ -1, 1, 503
};
static int parser_action_row412[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 504
};
static int parser_action_row413[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 505
};
static int parser_action_row414[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 506
};
static int parser_action_row415[] = {
- 2,
- -1, 1, 149,
- 57, 0, 306
+ 24,
+ -1, 1, 507,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row416[] = {
- 2,
- -1, 1, 366,
- 56, 0, 587
+ 1,
+ -1, 1, 508
};
static int parser_action_row417[] = {
1,
- -1, 1, 450
+ -1, 1, 509
};
static int parser_action_row418[] = {
1,
- -1, 1, 449
+ -1, 1, 512
};
static int parser_action_row419[] = {
1,
- -1, 1, 212
+ -1, 1, 510
};
static int parser_action_row420[] = {
1,
- -1, 1, 231
+ -1, 1, 514
};
static int parser_action_row421[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 513
};
static int parser_action_row422[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 511
};
static int parser_action_row423[] = {
1,
- -1, 1, 80
+ -1, 1, 515
};
static int parser_action_row424[] = {
1,
- -1, 1, 82
+ -1, 1, 517
};
static int parser_action_row425[] = {
- 1,
- -1, 1, 81
+ 4,
+ -1, 1, 405,
+ 54, 0, 604,
+ 58, 0, 214,
+ 94, 0, 204
};
static int parser_action_row426[] = {
- 1,
- -1, 1, 83
+ 15,
+ -1, 1, 341,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 612,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row427[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 428
};
static int parser_action_row428[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 985
};
static int parser_action_row429[] = {
1,
- -1, 1, 30
+ -1, 1, 986
};
static int parser_action_row430[] = {
- 2,
- -1, 3, 429,
- 5, 0, 594
+ 1,
+ -1, 1, 994
};
static int parser_action_row431[] = {
1,
- -1, 1, 32
+ -1, 1, 996
};
static int parser_action_row432[] = {
1,
- -1, 1, 33
+ -1, 1, 995
};
static int parser_action_row433[] = {
- 19,
- -1, 3, 432,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 48,
- 89, 0, 611
+ 1,
+ -1, 1, 997
};
static int parser_action_row434[] = {
- 2,
- -1, 3, 433,
- 5, 0, 616
+ 1,
+ -1, 1, 998
};
static int parser_action_row435[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 999
};
static int parser_action_row436[] = {
1,
- -1, 1, 160
+ -1, 1, 429
};
static int parser_action_row437[] = {
- 1,
- -1, 1, 1006
+ 3,
+ -1, 1, 324,
+ 54, 0, 244,
+ 73, 0, 613
};
static int parser_action_row438[] = {
- 32,
- -1, 1, 157,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row439[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 433
};
static int parser_action_row440[] = {
- 5,
- -1, 1, 440,
- 12, 0, 619,
- 46, 0, 620,
- 88, 0, 48,
- 89, 0, 621
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 56, 0, 615
};
static int parser_action_row441[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 440,
+ 41, 0, 378,
+ 98, 0, 255
};
static int parser_action_row442[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 22,
+ -1, 1, 455,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 623
};
static int parser_action_row443[] = {
- 25,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 96, 1, 378,
- 97, 1, 378,
- 98, 0, 55
+ 1,
+ -1, 1, 520
};
static int parser_action_row444[] = {
1,
- -1, 1, 372
+ -1, 1, 432
};
static int parser_action_row445[] = {
1,
- -1, 1, 1012
+ -1, 1, 430
};
static int parser_action_row446[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 23,
+ -1, 1, 457,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 625
};
static int parser_action_row447[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row448[] = {
- 1,
- -1, 1, 329
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row449[] = {
- 1,
- -1, 1, 185
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row450[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 155,
+ 57, 0, 333
};
static int parser_action_row451[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 387,
+ 56, 0, 632
};
static int parser_action_row452[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 468
};
static int parser_action_row453[] = {
1,
- -1, 1, 191
+ -1, 1, 467
};
static int parser_action_row454[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 218
};
static int parser_action_row455[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 237
};
static int parser_action_row456[] = {
- 10,
- -1, 1, 323,
- 59, 0, 635,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row457[] = {
- 1,
- -1, 1, 182
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row458[] = {
1,
- -1, 1, 193
+ -1, 1, 82
};
static int parser_action_row459[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 84
};
static int parser_action_row460[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 83
};
static int parser_action_row461[] = {
- 10,
- -1, 1, 327,
- 59, 0, 639,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 85
};
static int parser_action_row462[] = {
- 1,
- -1, 1, 184
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row463[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row464[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 326,
- 59, 0, 642,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 326,
- 70, 1, 326,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 32
};
static int parser_action_row465[] = {
- 1,
- -1, 1, 14
+ 2,
+ -1, 3, 464,
+ 5, 0, 639
};
static int parser_action_row466[] = {
- 7,
- -1, 3, 465,
- 5, 0, 428,
- 6, 0, 429,
- 7, 0, 430,
- 8, 0, 431,
- 10, 0, 432,
- 17, 0, 433
+ 1,
+ -1, 1, 34
};
static int parser_action_row467[] = {
1,
- -1, 1, 15
+ -1, 1, 35
};
static int parser_action_row468[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 53, 0, 646,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 23,
+ -1, 3, 467,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
static int parser_action_row469[] = {
+ 2,
+ -1, 3, 468,
+ 5, 0, 665
+};
+static int parser_action_row470[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row470[] = {
- 1,
- -1, 1, 664
-};
static int parser_action_row471[] = {
- 3,
- -1, 1, 691,
- 52, 0, 253,
- 70, 0, 649
+ 1,
+ -1, 1, 166
};
static int parser_action_row472[] = {
1,
- -1, 1, 688
+ -1, 1, 1073
};
static int parser_action_row473[] = {
- 3,
- -1, 3, 472,
- 47, 0, 356,
- 88, 0, 357
+ 32,
+ -1, 1, 163,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row474[] = {
- 4,
- -1, 1, 693,
- 54, 1, 696,
- 68, 1, 696,
- 70, 1, 696
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 513,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row475[] = {
- 3,
+ 5,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 668,
+ 46, 0, 669,
+ 96, 0, 53,
+ 97, 0, 670
};
static int parser_action_row476[] = {
- 8,
- -1, 1, 419,
- 0, 1, 422,
- 1, 1, 422,
- 9, 1, 422,
- 24, 1, 422,
- 53, 1, 422,
- 56, 1, 422,
- 102, 1, 422
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row477[] = {
- 3,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row478[] = {
- 2,
- -1, 3, 477,
- 53, 0, 654
+ 26,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 104, 1, 399,
+ 105, 1, 399,
+ 106, 0, 60
};
static int parser_action_row479[] = {
1,
- -1, 1, 713
+ -1, 1, 393
};
static int parser_action_row480[] = {
1,
- -1, 1, 707
+ -1, 1, 1079
};
static int parser_action_row481[] = {
- 20,
- -1, 1, 440,
- 12, 0, 107,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row482[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row483[] = {
- 20,
- -1, 1, 440,
- 12, 0, 107,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 348
};
static int parser_action_row484[] = {
- 20,
- -1, 1, 440,
- 12, 0, 107,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 191
};
static int parser_action_row485[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row486[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row487[] = {
3,
- -1, 3, 486,
- 47, 0, 365,
- 88, 0, 366
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row488[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 197
};
static int parser_action_row489[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row490[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row491[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 13,
+ -1, 1, 342,
+ 59, 0, 684,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row492[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 188
};
static int parser_action_row493[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 199
};
static int parser_action_row494[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row495[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row496[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 13,
+ -1, 1, 346,
+ 59, 0, 688,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row497[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 190
};
static int parser_action_row498[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row499[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 345,
+ 59, 0, 691,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 345,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row500[] = {
- 19,
- -1, 1, 440,
- 12, 0, 107,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row501[] = {
- 5,
- -1, 1, 440,
- 12, 0, 675,
- 46, 0, 676,
- 88, 0, 48,
- 89, 0, 677
+ 1,
+ -1, 1, 14
};
static int parser_action_row502[] = {
- 1,
- -1, 1, 711
+ 7,
+ -1, 3, 501,
+ 5, 0, 463,
+ 6, 0, 464,
+ 7, 0, 465,
+ 8, 0, 466,
+ 10, 0, 467,
+ 17, 0, 468
};
static int parser_action_row503[] = {
- 2,
- -1, 1, 710,
- 52, 0, 253
+ 1,
+ -1, 1, 484
};
static int parser_action_row504[] = {
- 31,
- -1, 1, 440,
- 9, 0, 682,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 15
};
static int parser_action_row505[] = {
- 3,
- -1, 3, 504,
- 0, 0, 1,
- 1, 0, 2
+ 25,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 53, 0, 696,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 513,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row506[] = {
3,
- -1, 3, 505,
- 47, 0, 365,
- 88, 0, 366
-};
-static int parser_action_row507[] = {
- 3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row507[] = {
+ 1,
+ -1, 1, 706
+};
static int parser_action_row508[] = {
- 2,
- -1, 1, 198,
- 59, 0, 686
+ 3,
+ -1, 1, 741,
+ 52, 0, 277,
+ 73, 0, 699
};
static int parser_action_row509[] = {
- 2,
- -1, 3, 508,
- 23, 0, 687
+ 1,
+ -1, 1, 738
};
static int parser_action_row510[] = {
- 2,
+ 3,
-1, 3, 509,
- 15, 0, 688
+ 47, 0, 387,
+ 96, 0, 388
};
static int parser_action_row511[] = {
- 2,
- -1, 3, 510,
- 89, 0, 313
+ 3,
+ -1, 1, 743,
+ 54, 1, 746,
+ 73, 1, 746
};
static int parser_action_row512[] = {
- 2,
- -1, 3, 511,
- 28, 0, 690
-};
-static int parser_action_row513[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row513[] = {
+ 9,
+ -1, 1, 438,
+ 0, 1, 441,
+ 1, 1, 441,
+ 9, 1, 441,
+ 24, 1, 441,
+ 53, 1, 441,
+ 56, 1, 441,
+ 95, 1, 441,
+ 110, 1, 441
+};
static int parser_action_row514[] = {
- 1,
- -1, 1, 134
+ 4,
+ -1, 1, 341,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 703
};
static int parser_action_row515[] = {
+ 2,
+ -1, 1, 366,
+ 71, 0, 704
+};
+static int parser_action_row516[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row516[] = {
- 1,
- -1, 1, 280
-};
static int parser_action_row517[] = {
- 3,
- -1, 1, 307,
- 52, 0, 253,
- 70, 0, 553
+ 2,
+ -1, 3, 516,
+ 53, 0, 706
};
static int parser_action_row518[] = {
1,
- -1, 1, 304
+ -1, 1, 763
};
static int parser_action_row519[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 757
};
static int parser_action_row520[] = {
- 4,
- -1, 1, 309,
- 54, 1, 312,
- 68, 1, 312,
- 70, 1, 312
+ 21,
+ -1, 1, 458,
+ 12, 0, 116,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row521[] = {
- 22,
- -1, 1, 440,
- 12, 0, 156,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row522[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row522[] = {
+ 21,
+ -1, 1, 458,
+ 12, 0, 116,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
+};
static int parser_action_row523[] = {
- 22,
- -1, 1, 440,
- 12, 0, 156,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 21,
+ -1, 1, 458,
+ 12, 0, 116,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row524[] = {
- 22,
- -1, 1, 440,
- 12, 0, 156,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 523,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row525[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row526[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row527[] = {
- 3,
- -1, 3, 526,
- 47, 0, 365,
- 88, 0, 366
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row528[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row529[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row530[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row531[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row532[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row533[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row534[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row535[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row536[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row537[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row538[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row539[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row540[] = {
- 21,
- -1, 1, 440,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row541[] = {
- 5,
- -1, 1, 440,
- 12, 0, 715,
- 46, 0, 620,
- 88, 0, 48,
- 89, 0, 716
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row542[] = {
- 1,
- -1, 1, 323
+ 20,
+ -1, 1, 458,
+ 12, 0, 116,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row543[] = {
- 1,
- -1, 1, 327
+ 5,
+ -1, 1, 458,
+ 12, 0, 730,
+ 46, 0, 731,
+ 96, 0, 53,
+ 97, 0, 732
};
static int parser_action_row544[] = {
- 2,
- -1, 1, 326,
- 52, 0, 253
+ 1,
+ -1, 1, 761
};
static int parser_action_row545[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 760,
+ 52, 0, 277
};
static int parser_action_row546[] = {
- 1,
- -1, 1, 152
+ 31,
+ -1, 1, 458,
+ 9, 0, 737,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row547[] = {
- 1,
- -1, 1, 267
+ 4,
+ -1, 3, 546,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row548[] = {
- 31,
- -1, 1, 440,
- 9, 0, 722,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row549[] = {
3,
- -1, 1, 745,
- 54, 0, 724,
- 87, 0, 550
+ -1, 3, 547,
+ 47, 0, 396,
+ 96, 0, 397
};
-static int parser_action_row550[] = {
+static int parser_action_row549[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row550[] = {
+ 2,
+ -1, 1, 204,
+ 59, 0, 741
+};
static int parser_action_row551[] = {
- 3,
- -1, 1, 28,
- 13, 0, 26,
- 52, 0, 727
+ 2,
+ -1, 3, 550,
+ 23, 0, 742
};
static int parser_action_row552[] = {
- 1,
- -1, 1, 744
+ 2,
+ -1, 3, 551,
+ 15, 0, 743
};
static int parser_action_row553[] = {
- 1,
- -1, 1, 580
+ 2,
+ -1, 3, 552,
+ 97, 0, 341
};
static int parser_action_row554[] = {
+ 2,
+ -1, 3, 553,
+ 28, 0, 745
+};
+static int parser_action_row555[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row555[] = {
- 2,
- -1, 1, 28,
- 13, 0, 26
-};
static int parser_action_row556[] = {
- 4,
- -1, 3, 555,
- 6, 0, 734,
- 17, 0, 735,
- 89, 0, 736
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row557[] = {
- 2,
- -1, 3, 556,
- 59, 0, 738
+ 1,
+ -1, 1, 291
};
static int parser_action_row558[] = {
- 2,
- -1, 1, 149,
- 57, 0, 306
+ 3,
+ -1, 1, 326,
+ 52, 0, 277,
+ 73, 0, 597
};
static int parser_action_row559[] = {
- 2,
- -1, 3, 558,
- 15, 0, 740
+ 1,
+ -1, 1, 323
};
static int parser_action_row560[] = {
3,
- -1, 1, 384,
- 54, 0, 741,
- 87, 0, 185
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row561[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 328,
+ 54, 1, 331,
+ 73, 1, 331
};
static int parser_action_row562[] = {
- 1,
- -1, 1, 140
+ 23,
+ -1, 1, 458,
+ 12, 0, 170,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row563[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row564[] = {
- 1,
- -1, 1, 926
+ 23,
+ -1, 1, 458,
+ 12, 0, 170,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row565[] = {
- 1,
- -1, 1, 931
+ 23,
+ -1, 1, 458,
+ 12, 0, 170,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row566[] = {
- 1,
- -1, 1, 928
+ 3,
+ -1, 3, 565,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row567[] = {
- 3,
- -1, 3, 566,
- 47, 0, 365,
- 88, 0, 366
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row568[] = {
- 2,
- -1, 1, 484,
- 59, 0, 746
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row569[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row570[] = {
- 3,
+ 22,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row571[] = {
- 2,
- -1, 3, 570,
- 53, 0, 748
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row572[] = {
- 3,
+ 22,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row573[] = {
- 1,
- -1, 1, 1007
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row574[] = {
- 2,
- -1, 3, 573,
- 53, 0, 750
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row575[] = {
- 2,
- -1, 1, 364,
- 56, 0, 571
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row576[] = {
- 2,
- -1, 3, 575,
- 55, 0, 567
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row577[] = {
- 1,
- -1, 1, 470
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row578[] = {
- 1,
- -1, 1, 471
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row579[] = {
- 11,
- -1, 1, 324,
- 52, 0, 253,
- 59, 0, 752,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row580[] = {
- 1,
- -1, 1, 489
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row581[] = {
- 12,
- -1, 1, 328,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 753,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row582[] = {
- 18,
- -1, 1, 438,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 754
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row583[] = {
- 1,
- -1, 1, 491
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row584[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 22,
+ -1, 1, 458,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row585[] = {
- 3,
- -1, 3, 584,
- 52, 0, 312,
- 89, 0, 313
+ 5,
+ -1, 1, 458,
+ 12, 0, 773,
+ 46, 0, 669,
+ 96, 0, 53,
+ 97, 0, 774
};
static int parser_action_row586[] = {
- 2,
- -1, 1, 369,
- 69, 0, 758
+ 1,
+ -1, 1, 342
};
static int parser_action_row587[] = {
- 2,
- -1, 3, 586,
- 55, 0, 759
+ 1,
+ -1, 1, 346
};
static int parser_action_row588[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 345,
+ 52, 0, 277
};
static int parser_action_row589[] = {
- 1,
- -1, 1, 1009
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row590[] = {
- 2,
- -1, 1, 367,
- 56, 0, 587
+ 1,
+ -1, 1, 158
};
static int parser_action_row591[] = {
1,
- -1, 1, 211
+ -1, 1, 278
};
static int parser_action_row592[] = {
- 1,
- -1, 1, 230
+ 31,
+ -1, 1, 458,
+ 9, 0, 780,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row593[] = {
3,
- -1, 3, 592,
- 58, 0, 762,
- 89, 0, 763
+ -1, 1, 797,
+ 54, 0, 782,
+ 94, 0, 594
};
static int parser_action_row594[] = {
- 4,
- -1, 3, 593,
- 9, 0, 766,
- 58, 0, 762,
- 89, 0, 763
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row595[] = {
- 1,
- -1, 1, 31
+ 3,
+ -1, 1, 30,
+ 13, 0, 32,
+ 52, 0, 785
};
static int parser_action_row596[] = {
- 2,
- -1, 3, 595,
- 55, 0, 768
+ 1,
+ -1, 1, 796
};
static int parser_action_row597[] = {
1,
- -1, 1, 84
+ -1, 1, 622
};
static int parser_action_row598[] = {
- 1,
- -1, 1, 85
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row599[] = {
- 1,
- -1, 1, 86
+ 2,
+ -1, 1, 30,
+ 13, 0, 32
};
static int parser_action_row600[] = {
- 1,
- -1, 1, 87
+ 4,
+ -1, 3, 599,
+ 6, 0, 792,
+ 17, 0, 793,
+ 97, 0, 794
};
static int parser_action_row601[] = {
- 1,
- -1, 1, 88
+ 2,
+ -1, 3, 600,
+ 59, 0, 796
};
static int parser_action_row602[] = {
- 1,
- -1, 1, 89
+ 2,
+ -1, 1, 155,
+ 57, 0, 333
};
static int parser_action_row603[] = {
- 1,
- -1, 1, 90
+ 2,
+ -1, 3, 602,
+ 15, 0, 798
};
static int parser_action_row604[] = {
- 1,
- -1, 1, 91
+ 3,
+ -1, 1, 405,
+ 54, 0, 799,
+ 94, 0, 204
};
static int parser_action_row605[] = {
- 1,
- -1, 1, 94
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row606[] = {
1,
- -1, 1, 92
+ -1, 1, 146
};
static int parser_action_row607[] = {
- 1,
- -1, 1, 96
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row608[] = {
1,
- -1, 1, 95
+ -1, 1, 988
};
static int parser_action_row609[] = {
1,
- -1, 1, 93
+ -1, 1, 993
};
static int parser_action_row610[] = {
1,
- -1, 1, 97
+ -1, 1, 990
};
static int parser_action_row611[] = {
- 1,
- -1, 1, 99
+ 3,
+ -1, 3, 610,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row612[] = {
- 3,
- -1, 1, 102,
- 58, 0, 196,
- 59, 0, 769
+ 2,
+ -1, 1, 516,
+ 59, 0, 804
};
static int parser_action_row613[] = {
- 1,
- -1, 1, 445
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row614[] = {
- 5,
- -1, 1, 458,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 52, 0, 770,
- 57, 0, 771
+ 1, 0, 2
};
static int parser_action_row615[] = {
- 18,
+ 2,
-1, 3, 614,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 89, 0, 775
+ 53, 0, 806
};
static int parser_action_row616[] = {
- 19,
- -1, 3, 615,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 48,
- 89, 0, 611
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row617[] = {
1,
- -1, 1, 34
+ -1, 1, 1074
};
static int parser_action_row618[] = {
- 3,
+ 2,
-1, 3, 617,
- 88, 0, 779,
- 89, 0, 780
+ 53, 0, 808
};
static int parser_action_row619[] = {
2,
- -1, 3, 618,
- 55, 0, 784
+ -1, 1, 385,
+ 56, 0, 615
};
static int parser_action_row620[] = {
- 27,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 332,
- 68, 1, 332,
- 70, 1, 332,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 3, 619,
+ 55, 0, 611
};
static int parser_action_row621[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 498
};
static int parser_action_row622[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 314,
- 58, 0, 196,
- 59, 0, 788,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 314,
- 70, 1, 314,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 499
};
static int parser_action_row623[] = {
- 2,
- -1, 3, 622,
- 90, 0, 792
+ 1,
+ -1, 1, 507
};
static int parser_action_row624[] = {
- 3,
- -1, 1, 437,
- 12, 0, 793,
- 89, 0, 794
+ 14,
+ -1, 1, 343,
+ 52, 0, 277,
+ 59, 0, 810,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row625[] = {
- 4,
- -1, 1, 439,
- 12, 0, 795,
- 88, 0, 48,
- 89, 0, 796
+ 1,
+ -1, 1, 521
};
static int parser_action_row626[] = {
- 1,
- -1, 1, 219
+ 15,
+ -1, 1, 347,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 811,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row627[] = {
- 1,
- -1, 1, 238
+ 22,
+ -1, 1, 456,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 812
};
static int parser_action_row628[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 523
};
static int parser_action_row629[] = {
- 1,
- -1, 1, 373
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row630[] = {
- 1,
- -1, 1, 374
+ 3,
+ -1, 3, 629,
+ 52, 0, 340,
+ 97, 0, 341
};
static int parser_action_row631[] = {
- 1,
- -1, 1, 202
+ 2,
+ -1, 1, 390,
+ 72, 0, 816
};
static int parser_action_row632[] = {
- 1,
- -1, 1, 221
+ 2,
+ -1, 3, 631,
+ 55, 0, 817
};
static int parser_action_row633[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 53, 0, 799,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row634[] = {
1,
- -1, 1, 214
+ -1, 1, 1076
};
static int parser_action_row635[] = {
- 1,
- -1, 1, 233
+ 2,
+ -1, 1, 388,
+ 56, 0, 632
};
static int parser_action_row636[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 217
};
static int parser_action_row637[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 236
};
static int parser_action_row638[] = {
- 1,
- -1, 1, 218
+ 3,
+ -1, 3, 637,
+ 58, 0, 820,
+ 97, 0, 821
};
static int parser_action_row639[] = {
- 1,
- -1, 1, 237
+ 4,
+ -1, 3, 638,
+ 9, 0, 824,
+ 58, 0, 820,
+ 97, 0, 821
};
static int parser_action_row640[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 33
};
static int parser_action_row641[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 640,
+ 55, 0, 826
};
static int parser_action_row642[] = {
1,
- -1, 1, 192
+ -1, 1, 86
};
static int parser_action_row643[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 87
};
static int parser_action_row644[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 88
};
static int parser_action_row645[] = {
- 10,
- -1, 1, 325,
- 59, 0, 807,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 89
};
static int parser_action_row646[] = {
1,
- -1, 1, 183
+ -1, 1, 90
};
static int parser_action_row647[] = {
1,
- -1, 1, 419
+ -1, 1, 91
};
static int parser_action_row648[] = {
- 2,
- -1, 3, 647,
- 53, 0, 809
+ 1,
+ -1, 1, 92
};
static int parser_action_row649[] = {
- 2,
- -1, 3, 648,
- 23, 0, 810
+ 1,
+ -1, 1, 93
};
static int parser_action_row650[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 94
};
static int parser_action_row651[] = {
1,
- -1, 1, 690
+ -1, 1, 95
};
static int parser_action_row652[] = {
- 2,
- -1, 3, 651,
- 70, 0, 649
+ 1,
+ -1, 1, 96
};
static int parser_action_row653[] = {
- 5,
- -1, 1, 440,
- 12, 0, 675,
- 46, 0, 676,
- 88, 0, 48,
- 89, 0, 677
+ 1,
+ -1, 1, 97
};
static int parser_action_row654[] = {
- 2,
- -1, 1, 426,
- 56, 0, 813
+ 1,
+ -1, 1, 100
};
static int parser_action_row655[] = {
- 8,
- -1, 1, 418,
- 0, 1, 420,
- 1, 1, 420,
- 9, 1, 420,
- 24, 1, 420,
- 53, 1, 420,
- 56, 1, 420,
- 102, 1, 420
+ 1,
+ -1, 1, 98
};
static int parser_action_row656[] = {
1,
- -1, 1, 660
+ -1, 1, 102
};
static int parser_action_row657[] = {
- 20,
- -1, 1, 440,
- 12, 0, 107,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 101
};
static int parser_action_row658[] = {
1,
- -1, 1, 659
+ -1, 1, 99
};
static int parser_action_row659[] = {
1,
- -1, 1, 662
+ -1, 1, 103
};
static int parser_action_row660[] = {
- 3,
- -1, 1, 670,
- 71, 0, 284,
- 72, 0, 285
+ 1,
+ -1, 1, 105
};
static int parser_action_row661[] = {
3,
- -1, 1, 673,
- 71, 0, 284,
- 72, 0, 285
+ -1, 1, 108,
+ 58, 0, 215,
+ 59, 0, 827
};
static int parser_action_row662[] = {
1,
- -1, 1, 675
+ -1, 1, 463
};
static int parser_action_row663[] = {
- 4,
- -1, 1, 677,
- 73, 0, 293,
- 75, 0, 294,
- 76, 0, 295
+ 5,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 57, 0, 829
};
static int parser_action_row664[] = {
- 4,
- -1, 1, 678,
- 73, 0, 293,
- 75, 0, 294,
- 76, 0, 295
+ 22,
+ -1, 3, 663,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 97, 0, 833
};
static int parser_action_row665[] = {
- 3,
- -1, 1, 666,
- 71, 0, 284,
- 72, 0, 285
+ 23,
+ -1, 3, 664,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
static int parser_action_row666[] = {
- 3,
- -1, 1, 667,
- 71, 0, 284,
- 72, 0, 285
+ 1,
+ -1, 1, 36
};
static int parser_action_row667[] = {
3,
- -1, 1, 668,
- 71, 0, 284,
- 72, 0, 285
+ -1, 3, 666,
+ 96, 0, 837,
+ 97, 0, 838
};
static int parser_action_row668[] = {
- 3,
- -1, 1, 669,
- 71, 0, 284,
- 72, 0, 285
+ 2,
+ -1, 3, 667,
+ 55, 0, 842
};
static int parser_action_row669[] = {
- 3,
- -1, 1, 671,
- 71, 0, 284,
- 72, 0, 285
+ 27,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 351,
+ 73, 1, 351,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row670[] = {
3,
- -1, 1, 672,
- 71, 0, 284,
- 72, 0, 285
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row671[] = {
- 3,
- -1, 1, 674,
- 71, 0, 284,
- 72, 0, 285
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 333,
+ 58, 0, 215,
+ 59, 0, 846,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 333,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row672[] = {
- 1,
- -1, 1, 680
+ 2,
+ -1, 3, 671,
+ 98, 0, 850
};
static int parser_action_row673[] = {
- 1,
- -1, 1, 681
+ 3,
+ -1, 1, 455,
+ 12, 0, 851,
+ 97, 0, 852
};
static int parser_action_row674[] = {
- 1,
- -1, 1, 682
+ 4,
+ -1, 1, 457,
+ 12, 0, 853,
+ 96, 0, 53,
+ 97, 0, 854
};
static int parser_action_row675[] = {
1,
- -1, 1, 684
+ -1, 1, 225
};
static int parser_action_row676[] = {
- 2,
- -1, 1, 716,
- 52, 0, 253
+ 1,
+ -1, 1, 244
};
static int parser_action_row677[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row678[] = {
- 3,
- -1, 1, 698,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 394
};
static int parser_action_row679[] = {
- 2,
- -1, 3, 678,
- 90, 0, 820
+ 1,
+ -1, 1, 395
};
static int parser_action_row680[] = {
- 2,
- -1, 1, 437,
- 89, 0, 821
+ 1,
+ -1, 1, 208
};
static int parser_action_row681[] = {
- 3,
- -1, 1, 439,
- 88, 0, 48,
- 89, 0, 822
+ 1,
+ -1, 1, 227
};
static int parser_action_row682[] = {
- 1,
- -1, 1, 709
+ 25,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 53, 0, 857,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 513,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row683[] = {
1,
- -1, 1, 158
+ -1, 1, 220
};
static int parser_action_row684[] = {
- 31,
- -1, 1, 440,
- 9, 0, 824,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 239
};
static int parser_action_row685[] = {
- 1,
- -1, 1, 148
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row686[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row687[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 224
};
static int parser_action_row688[] = {
- 34,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 827,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 24, 0, 831,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 243
};
static int parser_action_row689[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 143,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row690[] = {
- 4,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 56, 0, 512
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row691[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 198
};
static int parser_action_row692[] = {
- 2,
- -1, 3, 691,
- 89, 0, 864
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row693[] = {
- 2,
- -1, 3, 692,
- 23, 0, 865
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row694[] = {
- 1,
- -1, 1, 306
+ 13,
+ -1, 1, 344,
+ 59, 0, 865,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row695[] = {
- 5,
- -1, 1, 440,
- 12, 0, 715,
- 46, 0, 620,
- 88, 0, 48,
- 89, 0, 716
+ 1,
+ -1, 1, 189
};
static int parser_action_row696[] = {
1,
- -1, 1, 276
+ -1, 1, 140
};
static int parser_action_row697[] = {
- 22,
- -1, 1, 440,
- 12, 0, 156,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 438
};
static int parser_action_row698[] = {
- 1,
- -1, 1, 275
+ 2,
+ -1, 3, 697,
+ 53, 0, 867
};
static int parser_action_row699[] = {
- 1,
- -1, 1, 278
+ 2,
+ -1, 3, 698,
+ 23, 0, 868
};
static int parser_action_row700[] = {
3,
- -1, 1, 286,
- 71, 0, 332,
- 72, 0, 333
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row701[] = {
- 3,
- -1, 1, 289,
- 71, 0, 332,
- 72, 0, 333
+ 1,
+ -1, 1, 740
};
static int parser_action_row702[] = {
- 1,
- -1, 1, 291
+ 2,
+ -1, 3, 701,
+ 73, 0, 699
};
static int parser_action_row703[] = {
- 4,
- -1, 1, 293,
- 73, 0, 341,
- 75, 0, 342,
- 76, 0, 343
+ 5,
+ -1, 1, 458,
+ 12, 0, 730,
+ 46, 0, 731,
+ 96, 0, 53,
+ 97, 0, 732
};
static int parser_action_row704[] = {
- 4,
- -1, 1, 294,
- 73, 0, 341,
- 75, 0, 342,
- 76, 0, 343
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row705[] = {
- 3,
- -1, 1, 282,
- 71, 0, 332,
- 72, 0, 333
+ 1,
+ -1, 1, 367
};
static int parser_action_row706[] = {
- 3,
- -1, 1, 283,
- 71, 0, 332,
- 72, 0, 333
+ 2,
+ -1, 1, 444,
+ 56, 0, 872
};
static int parser_action_row707[] = {
- 3,
- -1, 1, 284,
- 71, 0, 332,
- 72, 0, 333
+ 9,
+ -1, 1, 437,
+ 0, 1, 439,
+ 1, 1, 439,
+ 9, 1, 439,
+ 24, 1, 439,
+ 53, 1, 439,
+ 56, 1, 439,
+ 95, 1, 439,
+ 110, 1, 439
};
static int parser_action_row708[] = {
- 3,
- -1, 1, 285,
- 71, 0, 332,
- 72, 0, 333
+ 1,
+ -1, 1, 702
};
static int parser_action_row709[] = {
- 3,
- -1, 1, 287,
- 71, 0, 332,
- 72, 0, 333
+ 21,
+ -1, 1, 458,
+ 12, 0, 116,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row710[] = {
- 3,
- -1, 1, 288,
- 71, 0, 332,
- 72, 0, 333
+ 1,
+ -1, 1, 701
};
static int parser_action_row711[] = {
- 3,
- -1, 1, 290,
- 71, 0, 332,
- 72, 0, 333
+ 1,
+ -1, 1, 704
};
static int parser_action_row712[] = {
1,
- -1, 1, 296
+ -1, 1, 715
};
static int parser_action_row713[] = {
- 1,
- -1, 1, 297
+ 2,
+ -1, 1, 717,
+ 81, 0, 315
};
static int parser_action_row714[] = {
- 1,
- -1, 1, 298
+ 2,
+ -1, 1, 708,
+ 80, 0, 307
};
static int parser_action_row715[] = {
- 1,
- -1, 1, 300
+ 2,
+ -1, 1, 709,
+ 80, 0, 307
};
static int parser_action_row716[] = {
2,
- -1, 1, 332,
- 52, 0, 253
+ -1, 1, 710,
+ 80, 0, 307
};
static int parser_action_row717[] = {
- 3,
- -1, 1, 314,
- 52, 0, 253,
- 58, 0, 196
+ 2,
+ -1, 1, 711,
+ 80, 0, 307
};
static int parser_action_row718[] = {
2,
- -1, 3, 717,
- 90, 0, 869
+ -1, 1, 712,
+ 80, 0, 307
};
static int parser_action_row719[] = {
2,
- -1, 1, 437,
- 89, 0, 870
+ -1, 1, 713,
+ 80, 0, 307
};
static int parser_action_row720[] = {
- 3,
- -1, 1, 439,
- 88, 0, 48,
- 89, 0, 871
+ 2,
+ -1, 1, 714,
+ 80, 0, 307
};
static int parser_action_row721[] = {
- 1,
- -1, 1, 325
+ 2,
+ -1, 1, 719,
+ 82, 0, 316
};
static int parser_action_row722[] = {
- 1,
- -1, 1, 268
+ 3,
+ -1, 1, 721,
+ 88, 0, 317,
+ 91, 0, 318
};
static int parser_action_row723[] = {
- 1,
- -1, 1, 151
+ 3,
+ -1, 1, 723,
+ 74, 0, 319,
+ 75, 0, 320
};
static int parser_action_row724[] = {
- 1,
- -1, 1, 150
+ 3,
+ -1, 1, 724,
+ 74, 0, 319,
+ 75, 0, 320
};
static int parser_action_row725[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 4,
+ -1, 1, 726,
+ 76, 0, 321,
+ 78, 0, 322,
+ 79, 0, 323
};
static int parser_action_row726[] = {
- 1,
- -1, 1, 581
+ 4,
+ -1, 1, 727,
+ 76, 0, 321,
+ 78, 0, 322,
+ 79, 0, 323
};
static int parser_action_row727[] = {
- 3,
- -1, 3, 726,
- 47, 0, 365,
- 88, 0, 366
+ 1,
+ -1, 1, 729
};
static int parser_action_row728[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 730
};
static int parser_action_row729[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ 1,
+ -1, 1, 731
};
static int parser_action_row730[] = {
1,
- -1, 1, 742
+ -1, 1, 733
};
static int parser_action_row731[] = {
- 3,
- -1, 3, 730,
- 88, 0, 48,
- 89, 0, 878
+ 2,
+ -1, 1, 766,
+ 52, 0, 277
};
static int parser_action_row732[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
-};
-static int parser_action_row733[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row733[] = {
+ 3,
+ -1, 1, 748,
+ 52, 0, 277,
+ 58, 0, 215
+};
static int parser_action_row734[] = {
2,
- -1, 1, 388,
- 56, 0, 883
+ -1, 3, 733,
+ 98, 0, 879
};
static int parser_action_row735[] = {
- 1,
- -1, 1, 417
+ 2,
+ -1, 1, 455,
+ 97, 0, 880
};
static int parser_action_row736[] = {
- 1,
- -1, 1, 416
+ 3,
+ -1, 1, 457,
+ 96, 0, 53,
+ 97, 0, 881
};
static int parser_action_row737[] = {
1,
- -1, 1, 415
+ -1, 1, 759
};
static int parser_action_row738[] = {
- 3,
- -1, 1, 384,
- 52, 0, 886,
- 87, 0, 185
+ 1,
+ -1, 1, 164
};
static int parser_action_row739[] = {
- 3,
+ 31,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 9, 0, 883,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row740[] = {
- 2,
- -1, 3, 739,
- 59, 0, 889
+ 1,
+ -1, 1, 154
};
static int parser_action_row741[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 143,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row742[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row743[] = {
- 1,
- -1, 1, 141
+ 35,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 886,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 24, 0, 890,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row744[] = {
- 3,
- -1, 3, 743,
- 47, 0, 365,
- 88, 0, 366
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 157,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row745[] = {
- 1,
- -1, 1, 194
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 56, 0, 554
};
static int parser_action_row746[] = {
- 2,
- -1, 3, 745,
- 57, 0, 894
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row747[] = {
- 1,
- -1, 1, 487
+ 2,
+ -1, 3, 746,
+ 97, 0, 923
};
static int parser_action_row748[] = {
- 21,
- -1, 1, 440,
- 12, 0, 715,
- 46, 0, 620,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 88, 0, 48,
- 89, 0, 895
+ 2,
+ -1, 3, 747,
+ 23, 0, 924
};
static int parser_action_row749[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 325
};
static int parser_action_row750[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 5,
+ -1, 1, 458,
+ 12, 0, 773,
+ 46, 0, 669,
+ 96, 0, 53,
+ 97, 0, 774
};
static int parser_action_row751[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 287
};
static int parser_action_row752[] = {
- 1,
- -1, 1, 1008
+ 23,
+ -1, 1, 458,
+ 12, 0, 170,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row753[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 286
};
static int parser_action_row754[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 289
};
static int parser_action_row755[] = {
- 11,
- -1, 1, 326,
- 52, 0, 253,
- 59, 0, 902,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 300
};
static int parser_action_row756[] = {
- 1,
- -1, 1, 490
+ 2,
+ -1, 1, 302,
+ 81, 0, 366
};
static int parser_action_row757[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 293,
+ 80, 0, 358
};
static int parser_action_row758[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 294,
+ 80, 0, 358
};
static int parser_action_row759[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 295,
+ 80, 0, 358
};
static int parser_action_row760[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 296,
+ 80, 0, 358
};
static int parser_action_row761[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 411,
- 27, 0, 412,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 297,
+ 80, 0, 358
};
static int parser_action_row762[] = {
- 1,
- -1, 1, 1010
+ 2,
+ -1, 1, 298,
+ 80, 0, 358
};
static int parser_action_row763[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 299,
+ 80, 0, 358
};
static int parser_action_row764[] = {
2,
- -1, 1, 433,
- 58, 0, 196
+ -1, 1, 304,
+ 82, 0, 367
};
static int parser_action_row765[] = {
- 2,
- -1, 1, 76,
- 14, 0, 910
+ 3,
+ -1, 1, 306,
+ 88, 0, 368,
+ 91, 0, 369
};
static int parser_action_row766[] = {
- 2,
- -1, 3, 765,
- 89, 0, 912
+ 3,
+ -1, 1, 308,
+ 74, 0, 370,
+ 75, 0, 371
};
static int parser_action_row767[] = {
3,
- -1, 3, 766,
- 0, 0, 83,
- 1, 0, 84
+ -1, 1, 309,
+ 74, 0, 370,
+ 75, 0, 371
};
static int parser_action_row768[] = {
- 2,
- -1, 1, 76,
- 14, 0, 910
+ 4,
+ -1, 1, 311,
+ 76, 0, 372,
+ 78, 0, 373,
+ 79, 0, 374
};
static int parser_action_row769[] = {
- 2,
- -1, 1, 98,
- 59, 0, 915
+ 4,
+ -1, 1, 312,
+ 76, 0, 372,
+ 78, 0, 373,
+ 79, 0, 374
};
static int parser_action_row770[] = {
1,
- -1, 1, 100
+ -1, 1, 314
};
static int parser_action_row771[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 315
};
static int parser_action_row772[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 316
};
static int parser_action_row773[] = {
- 4,
- -1, 1, 118,
- 4, 0, 918,
- 14, 0, 919,
- 15, 0, 920
+ 1,
+ -1, 1, 318
};
static int parser_action_row774[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 351,
+ 52, 0, 277
};
static int parser_action_row775[] = {
- 1,
- -1, 1, 106
+ 3,
+ -1, 1, 333,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row776[] = {
2,
- -1, 1, 102,
- 59, 0, 769
+ -1, 3, 775,
+ 98, 0, 928
};
static int parser_action_row777[] = {
- 1,
- -1, 1, 446
+ 2,
+ -1, 1, 455,
+ 97, 0, 929
};
static int parser_action_row778[] = {
- 1,
- -1, 1, 448
+ 3,
+ -1, 1, 457,
+ 96, 0, 53,
+ 97, 0, 930
};
static int parser_action_row779[] = {
- 18,
- -1, 3, 778,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 89, 0, 775
+ 1,
+ -1, 1, 344
};
static int parser_action_row780[] = {
- 2,
- -1, 1, 441,
- 58, 0, 195
+ 1,
+ -1, 1, 279
};
static int parser_action_row781[] = {
- 2,
- -1, 3, 780,
- 58, 0, 196
+ 1,
+ -1, 1, 157
};
static int parser_action_row782[] = {
- 2,
- -1, 1, 37,
- 54, 0, 926
+ 1,
+ -1, 1, 156
};
static int parser_action_row783[] = {
- 2,
- -1, 3, 782,
- 88, 0, 928
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row784[] = {
- 3,
- -1, 3, 783,
- 88, 0, 929,
- 89, 0, 780
+ 1,
+ -1, 1, 623
};
static int parser_action_row785[] = {
- 1,
- -1, 1, 424
+ 3,
+ -1, 3, 784,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row786[] = {
- 1,
- -1, 1, 331
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row787[] = {
- 1,
- -1, 1, 186
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row788[] = {
- 3,
- -1, 3, 787,
- 31, 0, 931,
- 52, 0, 932
+ 1,
+ -1, 1, 794
};
static int parser_action_row789[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 788,
+ 96, 0, 53,
+ 97, 0, 937
};
static int parser_action_row790[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row791[] = {
- 10,
- -1, 1, 313,
- 59, 0, 935,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row792[] = {
- 1,
- -1, 1, 177
+ 2,
+ -1, 1, 408,
+ 56, 0, 942
};
static int parser_action_row793[] = {
- 10,
- -1, 1, 311,
- 59, 0, 937,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 436
};
static int parser_action_row794[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 435
};
static int parser_action_row795[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 316,
- 59, 0, 940,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 316,
- 70, 1, 316,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 434
};
static int parser_action_row796[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 405,
+ 52, 0, 945,
+ 94, 0, 204
};
static int parser_action_row797[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 320,
- 58, 0, 196,
- 59, 0, 945,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 320,
- 70, 1, 320,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row798[] = {
- 3,
- -1, 1, 438,
- 12, 0, 949,
- 89, 0, 950
+ 2,
+ -1, 3, 797,
+ 59, 0, 948
};
static int parser_action_row799[] = {
- 1,
- -1, 1, 377
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 157,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row800[] = {
- 1,
- -1, 1, 422
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row801[] = {
- 2,
- -1, 3, 800,
- 53, 0, 951
+ 1,
+ -1, 1, 147
};
static int parser_action_row802[] = {
- 1,
- -1, 1, 213
+ 3,
+ -1, 3, 801,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row803[] = {
1,
- -1, 1, 232
+ -1, 1, 200
};
static int parser_action_row804[] = {
- 1,
- -1, 1, 217
+ 2,
+ -1, 3, 803,
+ 57, 0, 953
};
static int parser_action_row805[] = {
1,
- -1, 1, 236
+ -1, 1, 519
};
static int parser_action_row806[] = {
- 1,
- -1, 1, 216
+ 25,
+ -1, 1, 458,
+ 12, 0, 773,
+ 46, 0, 669,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 954
};
static int parser_action_row807[] = {
- 1,
- -1, 1, 235
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row808[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row809[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row810[] = {
1,
- -1, 1, 418
+ -1, 1, 1075
};
static int parser_action_row811[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row812[] = {
- 3,
- -1, 3, 811,
- 88, 0, 48,
- 89, 0, 955
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row813[] = {
- 2,
- -1, 3, 812,
- 90, 0, 958
+ 14,
+ -1, 1, 345,
+ 52, 0, 277,
+ 59, 0, 961,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row814[] = {
+ 1,
+ -1, 1, 522
+};
+static int parser_action_row815[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row815[] = {
- 1,
- -1, 1, 1019
-};
static int parser_action_row816[] = {
- 2,
- -1, 1, 427,
- 56, 0, 813
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row817[] = {
- 1,
- -1, 1, 661
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row818[] = {
- 1,
- -1, 1, 715
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row819[] = {
- 3,
- -1, 3, 818,
- 31, 0, 961,
- 52, 0, 962
+ 25,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 446,
+ 27, 0, 447,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row820[] = {
1,
- -1, 1, 697
+ -1, 1, 1077
};
static int parser_action_row821[] = {
- 1,
- -1, 1, 695
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row822[] = {
2,
- -1, 1, 700,
- 52, 0, 253
+ -1, 1, 451,
+ 58, 0, 215
};
static int parser_action_row823[] = {
- 3,
- -1, 1, 704,
- 52, 0, 253,
- 58, 0, 196
+ 2,
+ -1, 1, 78,
+ 14, 0, 969
};
static int parser_action_row824[] = {
2,
- -1, 1, 438,
- 89, 0, 965
+ -1, 3, 823,
+ 97, 0, 971
};
static int parser_action_row825[] = {
- 1,
- -1, 1, 159
+ 4,
+ -1, 3, 824,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row826[] = {
- 1,
- -1, 1, 199
+ 2,
+ -1, 1, 78,
+ 14, 0, 969
};
static int parser_action_row827[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 104,
+ 59, 0, 974
};
static int parser_action_row828[] = {
1,
- -1, 1, 255
+ -1, 1, 106
};
static int parser_action_row829[] = {
- 27,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 334,
- 68, 1, 334,
- 70, 1, 334,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
-};
-static int parser_action_row830[] = {
- 33,
- -1, 1, 440,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 9, 0, 968,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1, 0, 2
};
-static int parser_action_row831[] = {
+static int parser_action_row830[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row832[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+static int parser_action_row831[] = {
+ 4,
+ -1, 1, 124,
+ 4, 0, 977,
+ 14, 0, 978,
+ 15, 0, 979
};
-static int parser_action_row833[] = {
+static int parser_action_row832[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row833[] = {
+ 1,
+ -1, 1, 112
+};
static int parser_action_row834[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 968,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 108,
+ 59, 0, 827
};
static int parser_action_row835[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 464
};
static int parser_action_row836[] = {
- 26,
- -1, 1, 163,
- 12, 0, 156,
- 22, 0, 157,
- 24, 1, 838,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 466
};
static int parser_action_row837[] = {
- 3,
- -1, 1, 168,
- 24, 1, 843,
- 49, 0, 178
+ 22,
+ -1, 3, 836,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 97, 0, 833
};
static int parser_action_row838[] = {
- 3,
- -1, 1, 165,
- 24, 1, 840,
- 49, 0, 178
+ 2,
+ -1, 1, 459,
+ 58, 0, 214
};
static int parser_action_row839[] = {
2,
- -1, 1, 167,
- 24, 1, 842
+ -1, 3, 838,
+ 58, 0, 215
};
static int parser_action_row840[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 181,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 7,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 0, 84,
+ 54, 0, 985,
+ 95, 0, 3,
+ 109, 0, 85
};
static int parser_action_row841[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 840,
+ 96, 0, 995
};
static int parser_action_row842[] = {
- 2,
+ 3,
-1, 3, 841,
- 11, 0, 985
+ 96, 0, 996,
+ 97, 0, 838
};
static int parser_action_row843[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 322,
- 58, 0, 196,
- 59, 0, 197,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 322,
- 70, 1, 322,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 443
};
static int parser_action_row844[] = {
1,
- -1, 1, 250
+ -1, 1, 350
};
static int parser_action_row845[] = {
- 2,
- -1, 1, 161,
- 24, 1, 836
+ 1,
+ -1, 1, 192
};
static int parser_action_row846[] = {
- 2,
- -1, 1, 162,
- 24, 1, 837
+ 3,
+ -1, 3, 845,
+ 31, 0, 998,
+ 52, 0, 999
};
static int parser_action_row847[] = {
- 1,
- -1, 1, 252
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row848[] = {
- 4,
- -1, 3, 847,
- 54, 0, 223,
- 68, 0, 224,
- 70, 0, 987
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row849[] = {
- 3,
- -1, 3, 848,
- 41, 0, 988,
- 90, 0, 235
+ 13,
+ -1, 1, 332,
+ 59, 0, 1002,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row850[] = {
- 3,
- -1, 1, 437,
- 12, 0, 989,
- 89, 0, 990
+ 1,
+ -1, 1, 183
};
static int parser_action_row851[] = {
- 32,
- -1, 1, 440,
- 9, 0, 827,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 24, 0, 831,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
+ 13,
+ -1, 1, 330,
+ 59, 0, 1004,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
static int parser_action_row852[] = {
- 2,
- -1, 3, 851,
- 24, 0, 994
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row853[] = {
- 1,
- -1, 1, 845
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 335,
+ 59, 0, 1007,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 335,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row854[] = {
- 1,
- -1, 1, 846
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row855[] = {
- 1,
- -1, 1, 848
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 339,
+ 58, 0, 215,
+ 59, 0, 1012,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 339,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row856[] = {
- 1,
- -1, 1, 847
+ 3,
+ -1, 1, 456,
+ 12, 0, 1016,
+ 97, 0, 1017
};
static int parser_action_row857[] = {
1,
- -1, 1, 849
+ -1, 1, 398
};
static int parser_action_row858[] = {
1,
- -1, 1, 850
+ -1, 1, 441
};
static int parser_action_row859[] = {
- 1,
- -1, 1, 851
+ 2,
+ -1, 3, 858,
+ 53, 0, 1018
};
static int parser_action_row860[] = {
- 4,
- -1, 1, 439,
- 12, 0, 995,
- 88, 0, 48,
- 89, 0, 996
+ 1,
+ -1, 1, 219
};
static int parser_action_row861[] = {
1,
- -1, 1, 259
+ -1, 1, 238
};
static int parser_action_row862[] = {
- 2,
- -1, 3, 861,
- 49, 0, 178
+ 1,
+ -1, 1, 223
};
static int parser_action_row863[] = {
- 2,
- -1, 3, 862,
- 53, 0, 999
+ 1,
+ -1, 1, 242
};
static int parser_action_row864[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 222
};
static int parser_action_row865[] = {
1,
- -1, 1, 432
+ -1, 1, 241
};
static int parser_action_row866[] = {
- 3,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row867[] = {
- 2,
- -1, 3, 866,
- 90, 0, 1002
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row868[] = {
1,
- -1, 1, 277
+ -1, 1, 437
};
static int parser_action_row869[] = {
- 1,
- -1, 1, 313
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row870[] = {
- 1,
- -1, 1, 311
+ 3,
+ -1, 3, 869,
+ 96, 0, 53,
+ 97, 0, 1022
};
static int parser_action_row871[] = {
2,
- -1, 1, 316,
- 52, 0, 253
+ -1, 3, 870,
+ 98, 0, 1025
};
static int parser_action_row872[] = {
- 3,
- -1, 1, 320,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 368
};
static int parser_action_row873[] = {
- 2,
- -1, 1, 438,
- 89, 0, 1005
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row874[] = {
- 3,
- -1, 3, 873,
- 47, 0, 365,
- 88, 0, 366
+ 1,
+ -1, 1, 1084
};
static int parser_action_row875[] = {
2,
- -1, 1, 144,
- 56, 0, 1007
+ -1, 1, 445,
+ 56, 0, 872
};
static int parser_action_row876[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 703
};
static int parser_action_row877[] = {
- 2,
- -1, 1, 28,
- 13, 0, 26
+ 1,
+ -1, 1, 765
};
static int parser_action_row878[] = {
- 4,
+ 3,
-1, 3, 877,
- 6, 0, 734,
- 17, 0, 735,
- 89, 0, 736
+ 31, 0, 1028,
+ 52, 0, 1029
};
static int parser_action_row879[] = {
- 3,
- -1, 1, 337,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 747
};
static int parser_action_row880[] = {
- 2,
- -1, 3, 879,
- 89, 0, 1014
+ 1,
+ -1, 1, 745
};
static int parser_action_row881[] = {
- 3,
- -1, 3, 880,
- 88, 0, 48,
- 89, 0, 1015
+ 2,
+ -1, 1, 750,
+ 52, 0, 277
};
static int parser_action_row882[] = {
- 4,
- -1, 3, 881,
- 6, 0, 734,
- 17, 0, 735,
- 89, 0, 736
+ 3,
+ -1, 1, 754,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row883[] = {
2,
- -1, 3, 882,
- 53, 0, 1018
+ -1, 1, 456,
+ 97, 0, 1032
};
static int parser_action_row884[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 165
};
static int parser_action_row885[] = {
1,
- -1, 1, 1013
+ -1, 1, 205
};
static int parser_action_row886[] = {
- 2,
- -1, 1, 389,
- 56, 0, 883
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row887[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 266
};
static int parser_action_row888[] = {
- 1,
- -1, 1, 385
+ 27,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 353,
+ 73, 1, 353,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row889[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1035,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row890[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row891[] = {
- 1,
- -1, 1, 263
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row892[] = {
- 2,
- -1, 3, 891,
- 49, 0, 178
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row893[] = {
- 3,
- -1, 3, 892,
- 47, 0, 365,
- 88, 0, 366
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1035,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row894[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row895[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 27,
+ -1, 1, 169,
+ 12, 0, 170,
+ 22, 0, 171,
+ 24, 1, 900,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row896[] = {
- 12,
- -1, 1, 314,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 1028,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 3,
+ -1, 1, 174,
+ 24, 1, 905,
+ 49, 0, 197
};
static int parser_action_row897[] = {
- 18,
- -1, 1, 437,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 1029
+ 3,
+ -1, 1, 171,
+ 24, 1, 902,
+ 49, 0, 197
};
static int parser_action_row898[] = {
- 1,
- -1, 1, 412
+ 2,
+ -1, 1, 173,
+ 24, 1, 904
};
static int parser_action_row899[] = {
- 19,
- -1, 1, 439,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 88, 0, 48,
- 89, 0, 1030
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 200,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row900[] = {
- 1,
- -1, 1, 363
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row901[] = {
- 1,
- -1, 1, 365
+ 2,
+ -1, 3, 900,
+ 11, 0, 1052
};
static int parser_action_row902[] = {
- 1,
- -1, 1, 362
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 341,
+ 58, 0, 215,
+ 59, 0, 216,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 341,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row903[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 259
};
static int parser_action_row904[] = {
2,
- -1, 3, 903,
- 23, 0, 1032
+ -1, 1, 167,
+ 24, 1, 898
};
static int parser_action_row905[] = {
2,
- -1, 3, 904,
- 28, 0, 1033
+ -1, 1, 168,
+ 24, 1, 899
};
static int parser_action_row906[] = {
- 22,
- -1, 1, 440,
- 12, 0, 1034,
- 22, 0, 1035,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 264
};
static int parser_action_row907[] = {
- 1,
- -1, 1, 361
+ 3,
+ -1, 3, 906,
+ 54, 0, 244,
+ 73, 0, 1054
};
static int parser_action_row908[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 907,
+ 41, 0, 1055,
+ 98, 0, 255
};
static int parser_action_row909[] = {
- 1,
- -1, 1, 368
+ 3,
+ -1, 1, 455,
+ 12, 0, 1056,
+ 97, 0, 1057
};
static int parser_action_row910[] = {
- 2,
- -1, 3, 909,
- 89, 0, 1069
+ 32,
+ -1, 1, 458,
+ 9, 0, 886,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 24, 0, 1058,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row911[] = {
- 4,
- -1, 1, 28,
- 0, 0, 83,
- 1, 0, 84,
- 13, 0, 26
+ 2,
+ -1, 3, 910,
+ 24, 0, 1062
};
static int parser_action_row912[] = {
- 3,
- -1, 3, 911,
- 0, 0, 83,
- 1, 0, 84
+ 1,
+ -1, 1, 907
};
static int parser_action_row913[] = {
- 2,
- -1, 1, 434,
- 58, 0, 196
+ 1,
+ -1, 1, 908
};
static int parser_action_row914[] = {
1,
- -1, 1, 18
+ -1, 1, 910
};
static int parser_action_row915[] = {
- 3,
- -1, 3, 914,
- 0, 0, 83,
- 1, 0, 84
+ 1,
+ -1, 1, 909
};
static int parser_action_row916[] = {
1,
- -1, 1, 101
+ -1, 1, 911
};
static int parser_action_row917[] = {
- 2,
- -1, 1, 109,
- 89, 0, 1076
+ 1,
+ -1, 1, 912
};
static int parser_action_row918[] = {
- 3,
- -1, 3, 917,
- 47, 0, 365,
- 88, 0, 366
+ 1,
+ -1, 1, 913
};
static int parser_action_row919[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 4,
+ -1, 1, 457,
+ 12, 0, 1063,
+ 96, 0, 53,
+ 97, 0, 1064
};
static int parser_action_row920[] = {
- 4,
- -1, 1, 28,
- 0, 0, 83,
- 1, 0, 84,
- 13, 0, 26
+ 1,
+ -1, 1, 270
};
static int parser_action_row921[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 920,
+ 49, 0, 197
};
static int parser_action_row922[] = {
- 3,
- -1, 1, 118,
- 4, 0, 918,
- 15, 0, 1084
+ 2,
+ -1, 3, 921,
+ 53, 0, 1067
};
static int parser_action_row923[] = {
- 3,
- -1, 3, 922,
- 28, 0, 33,
- 101, 0, 56
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row924[] = {
1,
- -1, 1, 465
+ -1, 1, 450
};
static int parser_action_row925[] = {
- 1,
- -1, 1, 105
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row926[] = {
- 1,
- -1, 1, 447
+ 2,
+ -1, 3, 925,
+ 98, 0, 1070
};
static int parser_action_row927[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 288
};
static int parser_action_row928[] = {
- 5,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 28, 0, 33,
- 101, 0, 56
+ 1,
+ -1, 1, 332
};
static int parser_action_row929[] = {
1,
- -1, 1, 442
+ -1, 1, 330
};
static int parser_action_row930[] = {
2,
- -1, 1, 444,
- 58, 0, 195
+ -1, 1, 335,
+ 52, 0, 277
};
static int parser_action_row931[] = {
- 2,
- -1, 3, 930,
- 88, 0, 1096
+ 3,
+ -1, 1, 339,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row932[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 456,
+ 97, 0, 1073
};
static int parser_action_row933[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 932,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row934[] = {
- 1,
- -1, 1, 204
+ 2,
+ -1, 1, 150,
+ 56, 0, 1075
};
static int parser_action_row935[] = {
- 1,
- -1, 1, 223
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row936[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 30,
+ 13, 0, 32
};
static int parser_action_row937[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 3, 936,
+ 6, 0, 792,
+ 17, 0, 793,
+ 97, 0, 794
};
static int parser_action_row938[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 356,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row939[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 938,
+ 97, 0, 1082
};
static int parser_action_row940[] = {
- 1,
- -1, 1, 188
+ 3,
+ -1, 3, 939,
+ 96, 0, 53,
+ 97, 0, 1083
};
static int parser_action_row941[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 3, 940,
+ 6, 0, 792,
+ 17, 0, 793,
+ 97, 0, 794
};
static int parser_action_row942[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 941,
+ 53, 0, 1086
};
static int parser_action_row943[] = {
- 10,
- -1, 1, 315,
- 59, 0, 1105,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row944[] = {
1,
- -1, 1, 178
+ -1, 1, 1080
};
static int parser_action_row945[] = {
- 1,
- -1, 1, 190
+ 2,
+ -1, 1, 409,
+ 56, 0, 942
};
static int parser_action_row946[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row947[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 406
};
static int parser_action_row948[] = {
- 10,
- -1, 1, 319,
- 59, 0, 1109,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row949[] = {
- 1,
- -1, 1, 180
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row950[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 274
};
static int parser_action_row951[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 318,
- 59, 0, 1112,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 318,
- 70, 1, 318,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 3, 950,
+ 49, 0, 197
};
static int parser_action_row952[] = {
- 1,
- -1, 1, 420
+ 3,
+ -1, 3, 951,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row953[] = {
- 1,
- -1, 1, 215
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row954[] = {
- 1,
- -1, 1, 234
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row955[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 15,
+ -1, 1, 333,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1096,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row956[] = {
- 3,
- -1, 1, 721,
- 52, 0, 253,
- 58, 0, 196
+ 22,
+ -1, 1, 455,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 1097
};
static int parser_action_row957[] = {
- 2,
- -1, 3, 956,
- 89, 0, 1118
+ 1,
+ -1, 1, 431
};
static int parser_action_row958[] = {
- 3,
- -1, 3, 957,
- 88, 0, 48,
- 89, 0, 1119
+ 23,
+ -1, 1, 457,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 1098
};
static int parser_action_row959[] = {
- 4,
- -1, 1, 692,
- 54, 1, 695,
- 68, 1, 695,
- 70, 1, 695
+ 1,
+ -1, 1, 384
};
static int parser_action_row960[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 386
};
static int parser_action_row961[] = {
1,
- -1, 1, 1020
+ -1, 1, 383
};
static int parser_action_row962[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row963[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 962,
+ 23, 0, 1100
};
static int parser_action_row964[] = {
- 1,
- -1, 1, 699
+ 2,
+ -1, 3, 963,
+ 28, 0, 1101
};
static int parser_action_row965[] = {
- 1,
- -1, 1, 703
+ 23,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 22, 0, 1103,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row966[] = {
- 2,
- -1, 1, 702,
- 52, 0, 253
+ 1,
+ -1, 1, 382
};
static int parser_action_row967[] = {
- 1,
- -1, 1, 200
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row968[] = {
- 2,
- -1, 1, 187,
- 24, 1, 862
+ 1,
+ -1, 1, 389
};
static int parser_action_row969[] = {
- 3,
- -1, 1, 152,
- 24, 1, 834,
- 49, 1, 919
+ 2,
+ -1, 3, 968,
+ 97, 0, 1142
};
static int parser_action_row970[] = {
- 31,
- -1, 1, 440,
- 9, 0, 1125,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 5,
+ -1, 1, 30,
+ 0, 0, 88,
+ 1, 0, 89,
+ 13, 0, 32,
+ 95, 0, 90
};
static int parser_action_row971[] = {
- 1,
- -1, 1, 871
+ 4,
+ -1, 3, 970,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row972[] = {
- 1,
- -1, 1, 835
+ 2,
+ -1, 1, 452,
+ 58, 0, 215
};
static int parser_action_row973[] = {
- 2,
- -1, 3, 972,
- 49, 0, 178
+ 1,
+ -1, 1, 18
};
static int parser_action_row974[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 3, 973,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row975[] = {
1,
- -1, 1, 254
+ -1, 1, 107
};
static int parser_action_row976[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 115,
+ 97, 0, 1148
};
static int parser_action_row977[] = {
- 1,
- -1, 1, 874
+ 3,
+ -1, 3, 976,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row978[] = {
- 2,
- -1, 3, 977,
- 49, 0, 178
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row979[] = {
- 3,
- -1, 3, 978,
- 52, 0, 312,
- 89, 0, 313
+ 5,
+ -1, 1, 30,
+ 0, 0, 88,
+ 1, 0, 89,
+ 13, 0, 32,
+ 95, 0, 90
};
static int parser_action_row980[] = {
- 2,
- -1, 1, 164,
- 24, 1, 839
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row981[] = {
- 2,
- -1, 1, 169,
- 24, 1, 844
+ 3,
+ -1, 1, 124,
+ 4, 0, 977,
+ 15, 0, 1156
};
static int parser_action_row982[] = {
- 2,
- -1, 1, 166,
- 24, 1, 841
+ 3,
+ -1, 3, 981,
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row983[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 493
};
static int parser_action_row984[] = {
- 2,
- -1, 1, 269,
- 24, 0, 1133
+ 1,
+ -1, 1, 111
};
static int parser_action_row985[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 362,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 465
};
static int parser_action_row986[] = {
3,
- -1, 3, 985,
- 47, 0, 365,
- 88, 0, 366
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row987[] = {
2,
- -1, 1, 181,
- 24, 1, 856
+ -1, 1, 75,
+ 9, 1, 45
};
static int parser_action_row988[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 987,
+ 9, 0, 1160
};
static int parser_action_row989[] = {
- 27,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 330,
- 68, 1, 330,
- 70, 1, 330,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 1062
};
static int parser_action_row990[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 4,
+ -1, 3, 989,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row991[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 324,
- 59, 0, 453,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 324,
- 70, 1, 324,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row992[] = {
- 3,
- -1, 3, 991,
- 9, 0, 827,
- 24, 0, 831
+ 1,
+ -1, 1, 74
};
static int parser_action_row993[] = {
- 3,
- -1, 3, 992,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 486
};
static int parser_action_row994[] = {
- 1,
- -1, 1, 253
+ 5,
+ -1, 1, 30,
+ 6, 0, 1163,
+ 9, 1, 46,
+ 13, 0, 32,
+ 97, 0, 1164
};
static int parser_action_row995[] = {
- 33,
- -1, 1, 440,
+ 5,
+ -1, 1, 485,
0, 0, 1,
1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 9, 1, 487,
+ 95, 0, 3
};
static int parser_action_row996[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 460
};
static int parser_action_row997[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 328,
- 58, 0, 196,
- 59, 0, 458,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 328,
- 70, 1, 328,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 1, 462,
+ 58, 0, 214
};
static int parser_action_row998[] = {
- 3,
- -1, 1, 438,
- 12, 0, 1145,
- 89, 0, 1146
+ 2,
+ -1, 3, 997,
+ 96, 0, 1171
};
static int parser_action_row999[] = {
- 1,
- -1, 1, 258
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1000[] = {
- 1,
- -1, 1, 429
-};
-static int parser_action_row1001[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row1001[] = {
+ 1,
+ -1, 1, 210
+};
static int parser_action_row1002[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 229
};
static int parser_action_row1003[] = {
- 4,
- -1, 1, 308,
- 54, 1, 311,
- 68, 1, 311,
- 70, 1, 311
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1004[] = {
- 1,
- -1, 1, 315
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1005[] = {
- 1,
- -1, 1, 319
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1006[] = {
- 2,
- -1, 1, 318,
- 52, 0, 253
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1007[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 194
};
static int parser_action_row1008[] = {
- 3,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1009[] = {
- 1,
- -1, 1, 1003
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1010[] = {
- 2,
- -1, 1, 145,
- 56, 0, 1007
+ 13,
+ -1, 1, 334,
+ 59, 0, 1180,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1011[] = {
- 2,
- -1, 3, 1010,
- 55, 0, 1153
+ 1,
+ -1, 1, 184
};
static int parser_action_row1012[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 196
};
static int parser_action_row1013[] = {
- 2,
- -1, 1, 745,
- 87, 0, 550
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1014[] = {
- 1,
- -1, 1, 336
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1015[] = {
- 2,
- -1, 1, 339,
- 52, 0, 253
+ 13,
+ -1, 1, 338,
+ 59, 0, 1184,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1016[] = {
- 3,
- -1, 1, 343,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 186
};
static int parser_action_row1017[] = {
- 2,
- -1, 3, 1016,
- 89, 0, 1158
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1018[] = {
- 13,
- -1, 1, 384,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 52, 0, 1159,
- 87, 0, 185,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 337,
+ 59, 0, 1187,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 337,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1019[] = {
1,
- -1, 1, 382
+ -1, 1, 439
};
static int parser_action_row1020[] = {
- 2,
- -1, 1, 28,
- 13, 0, 26
+ 1,
+ -1, 1, 221
};
static int parser_action_row1021[] = {
1,
- -1, 1, 1014
+ -1, 1, 240
};
static int parser_action_row1022[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1023[] = {
- 1,
- -1, 1, 264
+ 3,
+ -1, 1, 771,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1024[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1023,
+ 97, 0, 1193
};
static int parser_action_row1025[] = {
- 1,
- -1, 1, 262
+ 3,
+ -1, 3, 1024,
+ 96, 0, 53,
+ 97, 0, 1194
};
static int parser_action_row1026[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 742,
+ 54, 1, 745,
+ 73, 1, 745
};
static int parser_action_row1027[] = {
- 2,
- -1, 3, 1026,
- 55, 0, 1168
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 513,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1028[] = {
1,
- -1, 1, 938
+ -1, 1, 1085
};
static int parser_action_row1029[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1030[] = {
- 11,
- -1, 1, 316,
- 52, 0, 253,
- 59, 0, 1169,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1031[] = {
- 12,
- -1, 1, 320,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 1170,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 749
};
static int parser_action_row1032[] = {
- 18,
- -1, 1, 438,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 1171
+ 1,
+ -1, 1, 753
};
static int parser_action_row1033[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 752,
+ 52, 0, 277
};
static int parser_action_row1034[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 206
};
static int parser_action_row1035[] = {
2,
- -1, 1, 556,
- 52, 0, 253
+ -1, 1, 193,
+ 24, 1, 924
};
static int parser_action_row1036[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 158,
+ 24, 1, 896,
+ 49, 1, 981
};
static int parser_action_row1037[] = {
- 3,
+ 31,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 9, 0, 1200,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1038[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 933
};
static int parser_action_row1039[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 897
};
static int parser_action_row1040[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 3, 1039,
+ 49, 0, 197
};
static int parser_action_row1041[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1042[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 261
};
static int parser_action_row1043[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1044[] = {
- 16,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1183,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 52, 0, 46,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 936
};
static int parser_action_row1045[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 3, 1044,
+ 49, 0, 197
};
static int parser_action_row1046[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 3,
+ -1, 3, 1045,
+ 52, 0, 340,
+ 97, 0, 341
};
static int parser_action_row1047[] = {
- 3,
- -1, 1, 538,
- 52, 0, 253,
- 58, 0, 196
+ 2,
+ -1, 1, 170,
+ 24, 1, 901
};
static int parser_action_row1048[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 175,
+ 24, 1, 906
};
static int parser_action_row1049[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 172,
+ 24, 1, 903
};
static int parser_action_row1050[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1051[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 280,
+ 24, 0, 1208
};
static int parser_action_row1052[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 393,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1053[] = {
- 1,
- -1, 1, 579
+ 3,
+ -1, 3, 1052,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row1054[] = {
- 1,
- -1, 1, 578
+ 2,
+ -1, 1, 187,
+ 24, 1, 918
};
static int parser_action_row1055[] = {
3,
- -1, 3, 1054,
- 41, 0, 1194,
- 90, 0, 1195
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1056[] = {
- 2,
- -1, 1, 437,
- 89, 0, 1196
+ 27,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 349,
+ 73, 1, 349,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1057[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1058[] = {
- 4,
- -1, 1, 494,
- 29, 0, 1198,
- 30, 0, 1199,
- 32, 0, 1200
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 343,
+ 59, 0, 488,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 343,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1059[] = {
- 1,
- -1, 1, 496
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1060[] = {
3,
- -1, 1, 501,
- 81, 0, 1201,
- 84, 0, 1202
+ -1, 3, 1059,
+ 9, 0, 886,
+ 24, 0, 1216
};
static int parser_action_row1061[] = {
- 11,
- -1, 1, 503,
- 39, 0, 1203,
- 71, 0, 1204,
- 72, 0, 1205,
- 77, 0, 1206,
- 78, 0, 1207,
- 79, 0, 1208,
- 80, 0, 1209,
- 82, 0, 1210,
- 83, 0, 1211,
- 85, 0, 1212
+ 4,
+ -1, 3, 1060,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row1062[] = {
- 4,
- -1, 1, 514,
- 73, 0, 1213,
- 75, 0, 1214,
- 76, 0, 1215
+ 1,
+ -1, 1, 265
};
static int parser_action_row1063[] = {
- 1,
- -1, 1, 517
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1064[] = {
- 2,
- -1, 1, 521,
- 74, 0, 1216
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1065[] = {
- 1,
- -1, 1, 523
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 347,
+ 58, 0, 215,
+ 59, 0, 493,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 347,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1066[] = {
3,
- -1, 1, 527,
- 68, 0, 1217,
- 70, 0, 1218
+ -1, 1, 456,
+ 12, 0, 1222,
+ 97, 0, 1223
};
static int parser_action_row1067[] = {
1,
- -1, 1, 532
+ -1, 1, 269
};
static int parser_action_row1068[] = {
- 3,
- -1, 1, 439,
- 88, 0, 48,
- 89, 0, 1219
+ 1,
+ -1, 1, 447
};
static int parser_action_row1069[] = {
- 1,
- -1, 1, 369
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1070[] = {
- 2,
- -1, 1, 435,
- 58, 0, 196
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1071[] = {
- 2,
- -1, 3, 1070,
- 89, 0, 1221
+ 3,
+ -1, 1, 327,
+ 54, 1, 330,
+ 73, 1, 330
};
static int parser_action_row1072[] = {
1,
- -1, 1, 74
+ -1, 1, 334
};
static int parser_action_row1073[] = {
1,
- -1, 1, 387
+ -1, 1, 338
};
static int parser_action_row1074[] = {
+ 2,
+ -1, 1, 337,
+ 52, 0, 277
+};
+static int parser_action_row1075[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1075[] = {
- 1,
- -1, 1, 16
-};
static int parser_action_row1076[] = {
- 1,
- -1, 1, 17
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1077[] = {
- 3,
- -1, 1, 384,
- 57, 0, 771,
- 87, 0, 185
+ 1,
+ -1, 1, 1070
};
static int parser_action_row1078[] = {
2,
- -1, 3, 1077,
- 53, 0, 1229
+ -1, 1, 151,
+ 56, 0, 1075
};
static int parser_action_row1079[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 56, 0, 1230
+ 2,
+ -1, 3, 1078,
+ 55, 0, 1230
};
static int parser_action_row1080[] = {
- 1,
- -1, 1, 147
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1081[] = {
- 21,
- -1, 3, 1080,
- 41, 0, 1234,
- 47, 0, 365,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 389,
- 89, 0, 611
+ 2,
+ -1, 1, 797,
+ 94, 0, 594
};
static int parser_action_row1082[] = {
- 3,
- -1, 1, 77,
- 0, 1, 468,
- 1, 1, 468
+ 1,
+ -1, 1, 355
};
static int parser_action_row1083[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 358,
+ 52, 0, 277
};
static int parser_action_row1084[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 3,
+ -1, 1, 362,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1085[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1084,
+ 97, 0, 1235
};
static int parser_action_row1086[] = {
- 3,
- -1, 3, 1085,
- 28, 0, 33,
- 101, 0, 56
+ 13,
+ -1, 1, 405,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 52, 0, 1236,
+ 94, 0, 204,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1087[] = {
1,
- -1, 1, 466
+ -1, 1, 403
};
static int parser_action_row1088[] = {
2,
- -1, 3, 1087,
- 88, 0, 1245
+ -1, 1, 30,
+ 13, 0, 32
};
static int parser_action_row1089[] = {
- 2,
- -1, 1, 73,
- 9, 1, 43
+ 1,
+ -1, 1, 1081
};
static int parser_action_row1090[] = {
- 2,
- -1, 3, 1089,
- 9, 0, 1247
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1091[] = {
1,
- -1, 1, 997
+ -1, 1, 275
};
static int parser_action_row1092[] = {
- 3,
- -1, 3, 1091,
- 0, 0, 83,
- 1, 0, 84
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1093[] = {
+ 1,
+ -1, 1, 273
+};
+static int parser_action_row1094[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1094[] = {
- 1,
- -1, 1, 72
-};
static int parser_action_row1095[] = {
- 5,
- -1, 1, 28,
- 6, 0, 1250,
- 9, 1, 44,
- 13, 0, 26,
- 89, 0, 1251
+ 2,
+ -1, 3, 1094,
+ 55, 0, 1245
};
static int parser_action_row1096[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 1000
};
static int parser_action_row1097[] = {
- 1,
- -1, 1, 443
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1098[] = {
- 2,
- -1, 3, 1097,
- 45, 0, 1257
+ 14,
+ -1, 1, 335,
+ 52, 0, 277,
+ 59, 0, 1246,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1099[] = {
- 4,
- -1, 3, 1098,
- 31, 0, 1258,
- 47, 0, 365,
- 88, 0, 366
+ 15,
+ -1, 1, 339,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1247,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1100[] = {
- 1,
- -1, 1, 203
+ 22,
+ -1, 1, 456,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 1248
};
static int parser_action_row1101[] = {
- 1,
- -1, 1, 222
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1102[] = {
- 1,
- -1, 1, 201
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1103[] = {
- 1,
- -1, 1, 220
+ 2,
+ -1, 1, 596,
+ 52, 0, 277
};
static int parser_action_row1104[] = {
- 1,
- -1, 1, 206
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1105[] = {
- 1,
- -1, 1, 225
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1106[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1107[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1108[] = {
- 1,
- -1, 1, 210
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1109[] = {
- 1,
- -1, 1, 229
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1110[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1111[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1112[] = {
- 1,
- -1, 1, 189
+ 16,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1260,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 52, 0, 51,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1113[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1114[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1115[] = {
- 10,
- -1, 1, 317,
- 59, 0, 1266,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1116[] = {
- 1,
- -1, 1, 179
+ 3,
+ -1, 1, 578,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1117[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1118[] = {
- 1,
- -1, 1, 720
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1119[] = {
2,
- -1, 1, 723,
- 52, 0, 253
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1120[] = {
- 3,
- -1, 1, 727,
- 52, 0, 253,
- 58, 0, 196
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1121[] = {
2,
- -1, 3, 1120,
- 89, 0, 1271
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1122[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 621
};
static int parser_action_row1123[] = {
- 2,
- -1, 3, 1122,
- 45, 0, 1273
+ 1,
+ -1, 1, 620
};
static int parser_action_row1124[] = {
- 4,
+ 3,
-1, 3, 1123,
- 31, 0, 1274,
- 47, 0, 365,
- 88, 0, 366
+ 41, 0, 1272,
+ 98, 0, 1273
};
static int parser_action_row1125[] = {
- 1,
- -1, 1, 701
+ 2,
+ -1, 1, 455,
+ 97, 0, 1274
};
static int parser_action_row1126[] = {
3,
- -1, 1, 151,
- 24, 1, 833,
- 49, 1, 918
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1127[] = {
- 3,
- -1, 1, 150,
- 24, 1, 832,
- 49, 1, 917
+ 4,
+ -1, 1, 526,
+ 29, 0, 1276,
+ 30, 0, 1277,
+ 32, 0, 1278
};
static int parser_action_row1128[] = {
- 2,
- -1, 1, 247,
- 24, 1, 870
+ 1,
+ -1, 1, 528
};
static int parser_action_row1129[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 533
};
static int parser_action_row1130[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 10,
+ -1, 1, 535,
+ 39, 0, 1279,
+ 80, 0, 1280,
+ 84, 0, 1281,
+ 85, 0, 1282,
+ 86, 0, 1283,
+ 87, 0, 1284,
+ 89, 0, 1285,
+ 90, 0, 1286,
+ 92, 0, 1287
};
static int parser_action_row1131[] = {
2,
- -1, 1, 256,
- 24, 1, 873
+ -1, 1, 544,
+ 81, 0, 1288
};
static int parser_action_row1132[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 546,
+ 82, 0, 1289
};
static int parser_action_row1133[] = {
- 2,
- -1, 1, 270,
- 24, 0, 1279
+ 3,
+ -1, 1, 548,
+ 88, 0, 1290,
+ 91, 0, 1291
};
static int parser_action_row1134[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 1280,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 550,
+ 74, 0, 1292,
+ 75, 0, 1293
};
static int parser_action_row1135[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 4,
+ -1, 1, 553,
+ 76, 0, 1294,
+ 78, 0, 1295,
+ 79, 0, 1296
};
static int parser_action_row1136[] = {
- 2,
- -1, 3, 1135,
- 57, 0, 1284
+ 1,
+ -1, 1, 556
};
static int parser_action_row1137[] = {
- 5,
- -1, 1, 440,
- 12, 0, 1285,
- 46, 0, 620,
- 88, 0, 48,
- 89, 0, 1286
+ 2,
+ -1, 1, 560,
+ 77, 0, 1297
};
static int parser_action_row1138[] = {
- 2,
- -1, 1, 185,
- 24, 1, 860
+ 1,
+ -1, 1, 562
};
static int parser_action_row1139[] = {
2,
- -1, 1, 191,
- 24, 1, 866
+ -1, 1, 567,
+ 73, 0, 1298
};
static int parser_action_row1140[] = {
- 2,
- -1, 1, 182,
- 24, 1, 857
+ 1,
+ -1, 1, 572
};
static int parser_action_row1141[] = {
- 1,
- -1, 1, 251
+ 3,
+ -1, 1, 457,
+ 96, 0, 53,
+ 97, 0, 1299
};
static int parser_action_row1142[] = {
- 3,
- -1, 3, 1141,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 390
};
static int parser_action_row1143[] = {
- 1,
- -1, 1, 249
+ 2,
+ -1, 1, 453,
+ 58, 0, 215
};
static int parser_action_row1144[] = {
2,
- -1, 1, 193,
- 24, 1, 868
+ -1, 3, 1143,
+ 97, 0, 1301
};
static int parser_action_row1145[] = {
- 2,
- -1, 1, 184,
- 24, 1, 859
+ 1,
+ -1, 1, 76
};
static int parser_action_row1146[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row1147[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 326,
- 59, 0, 642,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 326,
- 70, 1, 326,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 16
};
static int parser_action_row1148[] = {
- 2,
- -1, 3, 1147,
- 15, 0, 1291
+ 1,
+ -1, 1, 17
};
static int parser_action_row1149[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 405,
+ 57, 0, 829,
+ 94, 0, 204
};
static int parser_action_row1150[] = {
- 1,
- -1, 1, 317
+ 2,
+ -1, 3, 1149,
+ 53, 0, 1308
};
static int parser_action_row1151[] = {
- 2,
- -1, 3, 1150,
- 55, 0, 1293
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 56, 0, 1309
};
static int parser_action_row1152[] = {
- 3,
- -1, 3, 1151,
- 47, 0, 365,
- 88, 0, 366
+ 1,
+ -1, 1, 153
};
static int parser_action_row1153[] = {
- 1,
- -1, 1, 1004
+ 25,
+ -1, 3, 1152,
+ 41, 0, 1313,
+ 47, 0, 396,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 424,
+ 97, 0, 660
};
static int parser_action_row1154[] = {
- 2,
- -1, 1, 745,
- 87, 0, 550
+ 4,
+ -1, 1, 79,
+ 0, 1, 496,
+ 1, 1, 496,
+ 95, 1, 496
};
static int parser_action_row1155[] = {
- 2,
- -1, 3, 1154,
- 53, 0, 1296
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row1156[] = {
- 1,
- -1, 1, 746
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1157[] = {
- 1,
- -1, 1, 338
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1158[] = {
- 1,
- -1, 1, 342
+ 3,
+ -1, 3, 1157,
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row1159[] = {
- 2,
- -1, 1, 341,
- 52, 0, 253
+ 1,
+ -1, 1, 494
};
static int parser_action_row1160[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 39,
+ 96, 0, 1324
};
static int parser_action_row1161[] = {
1,
- -1, 1, 390
+ -1, 1, 26
};
static int parser_action_row1162[] = {
1,
- -1, 1, 392
+ -1, 1, 47
};
static int parser_action_row1163[] = {
- 1,
- -1, 1, 393
+ 2,
+ -1, 3, 1162,
+ 9, 0, 1327
};
static int parser_action_row1164[] = {
1,
- -1, 1, 394
+ -1, 1, 1050
};
static int parser_action_row1165[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 1049
};
static int parser_action_row1166[] = {
- 2,
- -1, 1, 406,
- 56, 0, 1300
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row1167[] = {
- 1,
- -1, 1, 265
+ 56,
+ -1, 1, 420,
+ 12, 0, 116,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 117,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 118,
+ 33, 0, 1329,
+ 34, 0, 1330,
+ 35, 0, 1331,
+ 36, 0, 1332,
+ 37, 0, 43,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 47, 0, 396,
+ 48, 0, 125,
+ 50, 0, 49,
+ 51, 0, 1333,
+ 52, 0, 1334,
+ 54, 0, 619,
+ 74, 0, 1335,
+ 75, 0, 1336,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 1337,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 1338,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1168[] = {
- 2,
- -1, 3, 1167,
- 55, 0, 1303
+ 1,
+ -1, 1, 75
};
static int parser_action_row1169[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 1063
};
static int parser_action_row1170[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 1, 30,
+ 6, 0, 1163,
+ 13, 0, 32,
+ 97, 0, 1164
};
static int parser_action_row1171[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 44
};
static int parser_action_row1172[] = {
- 11,
- -1, 1, 318,
- 52, 0, 253,
- 59, 0, 1305,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 461
};
static int parser_action_row1173[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 411,
- 27, 0, 412,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1172,
+ 45, 0, 1358
};
static int parser_action_row1174[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 3, 1173,
+ 31, 0, 1359,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row1175[] = {
1,
- -1, 1, 554
+ -1, 1, 209
};
static int parser_action_row1176[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 228
};
static int parser_action_row1177[] = {
- 21,
- -1, 1, 440,
- 12, 0, 1034,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 207
};
static int parser_action_row1178[] = {
- 3,
- -1, 3, 1177,
- 47, 0, 1311,
- 88, 0, 1312
+ 1,
+ -1, 1, 226
};
static int parser_action_row1179[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 212
};
static int parser_action_row1180[] = {
1,
- -1, 1, 569
+ -1, 1, 231
};
static int parser_action_row1181[] = {
- 1,
- -1, 1, 570
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1182[] = {
- 1,
- -1, 1, 571
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1183[] = {
1,
- -1, 1, 572
+ -1, 1, 216
};
static int parser_action_row1184[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 235
};
static int parser_action_row1185[] = {
- 3,
- -1, 3, 1184,
- 41, 0, 1194,
- 90, 0, 1316
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1186[] = {
- 3,
- -1, 3, 1185,
- 68, 0, 1217,
- 70, 0, 1317
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1187[] = {
1,
- -1, 1, 525
+ -1, 1, 195
};
static int parser_action_row1188[] = {
- 1,
- -1, 1, 524
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1189[] = {
- 1,
- -1, 1, 536
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1190[] = {
- 1,
- -1, 1, 573
+ 13,
+ -1, 1, 336,
+ 59, 0, 1367,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1191[] = {
1,
- -1, 1, 574
+ -1, 1, 185
};
static int parser_action_row1192[] = {
- 1,
- -1, 1, 575
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1193[] = {
1,
- -1, 1, 577
+ -1, 1, 770
};
static int parser_action_row1194[] = {
- 1,
- -1, 1, 576
+ 2,
+ -1, 1, 773,
+ 52, 0, 277
};
static int parser_action_row1195[] = {
- 2,
- -1, 1, 552,
- 52, 0, 253
+ 3,
+ -1, 1, 777,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1196[] = {
- 1,
- -1, 1, 534
-};
-static int parser_action_row1197[] = {
2,
- -1, 1, 542,
- 52, 0, 253
+ -1, 3, 1195,
+ 97, 0, 1372
};
-static int parser_action_row1198[] = {
+static int parser_action_row1197[] = {
3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1198[] = {
+ 2,
-1, 3, 1197,
- 54, 0, 1320,
- 55, 0, 1321
+ 45, 0, 1374
};
static int parser_action_row1199[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 4,
+ -1, 3, 1198,
+ 31, 0, 1375,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row1200[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 24, 0, 1323
+ 1,
+ -1, 1, 751
};
static int parser_action_row1201[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 157,
+ 24, 1, 895,
+ 49, 1, 980
};
static int parser_action_row1202[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 156,
+ 24, 1, 894,
+ 49, 1, 979
};
static int parser_action_row1203[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 256,
+ 24, 1, 932
};
static int parser_action_row1204[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row1205[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row1206[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 267,
+ 24, 1, 935
};
static int parser_action_row1207[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row1208[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 281,
+ 24, 0, 1380
};
static int parser_action_row1209[] = {
- 3,
+ 34,
-1, 1, 458,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 9, 0, 1381,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1210[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row1211[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 1210,
+ 57, 0, 1385
};
static int parser_action_row1212[] = {
- 3,
+ 5,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 1386,
+ 46, 0, 669,
+ 96, 0, 53,
+ 97, 0, 1387
};
static int parser_action_row1213[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 191,
+ 24, 1, 922
};
static int parser_action_row1214[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 197,
+ 24, 1, 928
};
static int parser_action_row1215[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 188,
+ 24, 1, 919
};
static int parser_action_row1216[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 262
};
static int parser_action_row1217[] = {
- 3,
+ 34,
-1, 1, 458,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1218[] = {
1,
- -1, 1, 568
+ -1, 1, 263
};
static int parser_action_row1219[] = {
- 3,
- -1, 1, 458,
+ 4,
+ -1, 3, 1218,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row1220[] = {
- 3,
- -1, 1, 550,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 258
};
static int parser_action_row1221[] = {
2,
- -1, 1, 438,
- 89, 0, 1344
+ -1, 1, 199,
+ 24, 1, 930
};
static int parser_action_row1222[] = {
2,
- -1, 1, 436,
- 58, 0, 196
+ -1, 1, 190,
+ 24, 1, 921
};
static int parser_action_row1223[] = {
- 2,
- -1, 3, 1222,
- 9, 0, 1345
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1224[] = {
- 1,
- -1, 1, 1015
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 345,
+ 59, 0, 691,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 345,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1225[] = {
2,
- -1, 1, 28,
- 13, 0, 26
+ -1, 3, 1224,
+ 15, 0, 1393
};
static int parser_action_row1226[] = {
- 8,
- -1, 1, 458,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 4, 1, 395,
- 9, 1, 395,
- 15, 1, 395,
- 28, 1, 395,
- 101, 1, 395
+ 1, 0, 2
};
static int parser_action_row1227[] = {
- 2,
- -1, 1, 112,
- 68, 0, 1348
+ 1,
+ -1, 1, 336
};
static int parser_action_row1228[] = {
2,
- -1, 1, 383,
- 57, 0, 771
+ -1, 3, 1227,
+ 55, 0, 1395
};
static int parser_action_row1229[] = {
- 1,
- -1, 1, 111
+ 3,
+ -1, 3, 1228,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row1230[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 57, 0, 771
+ 1,
+ -1, 1, 1071
};
static int parser_action_row1231[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 797,
+ 94, 0, 594
};
static int parser_action_row1232[] = {
- 1,
- -1, 1, 999
+ 2,
+ -1, 3, 1231,
+ 53, 0, 1398
};
static int parser_action_row1233[] = {
1,
- -1, 1, 107
+ -1, 1, 798
};
static int parser_action_row1234[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 56, 0, 1230
+ 1,
+ -1, 1, 357
};
static int parser_action_row1235[] = {
1,
- -1, 1, 122
+ -1, 1, 361
};
static int parser_action_row1236[] = {
2,
- -1, 1, 116,
- 56, 0, 1355
+ -1, 1, 360,
+ 52, 0, 277
};
static int parser_action_row1237[] = {
- 1,
- -1, 1, 120
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1238[] = {
1,
- -1, 1, 121
+ -1, 1, 410
};
static int parser_action_row1239[] = {
- 2,
- -1, 1, 125,
- 70, 0, 1358
+ 1,
+ -1, 1, 412
};
static int parser_action_row1240[] = {
1,
- -1, 1, 123
+ -1, 1, 413
};
static int parser_action_row1241[] = {
- 2,
- -1, 1, 78,
- 9, 0, 1359
+ 1,
+ -1, 1, 414
};
static int parser_action_row1242[] = {
- 1,
- -1, 1, 452
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1243[] = {
- 1,
- -1, 1, 463
+ 2,
+ -1, 1, 425,
+ 56, 0, 1402
};
static int parser_action_row1244[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 1,
+ -1, 1, 276
};
static int parser_action_row1245[] = {
- 1,
- -1, 1, 467
+ 2,
+ -1, 3, 1244,
+ 55, 0, 1405
};
static int parser_action_row1246[] = {
- 3,
- -1, 1, 149,
- 57, 0, 306,
- 87, 0, 185
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1247[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 56, 0, 1363
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1248[] = {
- 1,
- -1, 1, 26
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1249[] = {
- 1,
- -1, 1, 45
+ 14,
+ -1, 1, 337,
+ 52, 0, 277,
+ 59, 0, 1407,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1250[] = {
- 2,
- -1, 3, 1249,
- 9, 0, 1367
+ 25,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 446,
+ 27, 0, 447,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1251[] = {
- 1,
- -1, 1, 988
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1252[] = {
1,
- -1, 1, 987
+ -1, 1, 594
};
static int parser_action_row1253[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1254[] = {
- 52,
- -1, 1, 401,
- 12, 0, 107,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 108,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 109,
- 33, 0, 1369,
- 34, 0, 1370,
- 35, 0, 1371,
- 36, 0, 1372,
- 37, 0, 38,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 47, 0, 365,
- 48, 0, 116,
- 50, 0, 44,
- 51, 0, 1373,
- 52, 0, 1374,
- 54, 0, 575,
- 71, 0, 1375,
- 72, 0, 1376,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 1377,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 22,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1255[] = {
- 1,
- -1, 1, 73
+ 3,
+ -1, 3, 1254,
+ 47, 0, 1413,
+ 96, 0, 1414
};
static int parser_action_row1256[] = {
- 1,
- -1, 1, 998
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1257[] = {
- 5,
- -1, 1, 28,
- 6, 0, 1250,
- 9, 1, 42,
- 13, 0, 26,
- 89, 0, 1251
+ 1,
+ -1, 1, 611
};
static int parser_action_row1258[] = {
1,
- -1, 1, 346
+ -1, 1, 612
};
static int parser_action_row1259[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 613
};
static int parser_action_row1260[] = {
+ 1,
+ -1, 1, 614
+};
+static int parser_action_row1261[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1261[] = {
- 1,
- -1, 1, 205
-};
static int parser_action_row1262[] = {
- 1,
- -1, 1, 224
+ 3,
+ -1, 3, 1261,
+ 41, 0, 1272,
+ 98, 0, 1418
};
static int parser_action_row1263[] = {
- 1,
- -1, 1, 209
+ 2,
+ -1, 3, 1262,
+ 73, 0, 1419
};
static int parser_action_row1264[] = {
1,
- -1, 1, 228
+ -1, 1, 564
};
static int parser_action_row1265[] = {
1,
- -1, 1, 208
+ -1, 1, 563
};
static int parser_action_row1266[] = {
1,
- -1, 1, 227
+ -1, 1, 565
};
static int parser_action_row1267[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 576
};
static int parser_action_row1268[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 615
};
static int parser_action_row1269[] = {
- 2,
- -1, 3, 1268,
- 24, 0, 1401
+ 1,
+ -1, 1, 616
};
static int parser_action_row1270[] = {
1,
- -1, 1, 722
+ -1, 1, 617
};
static int parser_action_row1271[] = {
1,
- -1, 1, 726
+ -1, 1, 619
};
static int parser_action_row1272[] = {
- 2,
- -1, 1, 725,
- 52, 0, 253
+ 1,
+ -1, 1, 618
};
static int parser_action_row1273[] = {
- 1,
- -1, 1, 428
+ 2,
+ -1, 1, 592,
+ 52, 0, 277
};
static int parser_action_row1274[] = {
1,
- -1, 1, 730
+ -1, 1, 574
};
static int parser_action_row1275[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 582,
+ 52, 0, 277
};
static int parser_action_row1276[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 1275,
+ 54, 0, 1422,
+ 55, 0, 1423
};
static int parser_action_row1277[] = {
- 2,
- -1, 3, 1276,
- 23, 0, 1405
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1278[] = {
- 2,
- -1, 3, 1277,
- 15, 0, 1406
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 24, 0, 1425
};
static int parser_action_row1279[] = {
- 2,
- -1, 3, 1278,
- 28, 0, 1407
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1280[] = {
- 33,
- -1, 1, 440,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 9, 0, 1280,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1, 0, 2
};
static int parser_action_row1281[] = {
- 2,
- -1, 1, 152,
- 24, 1, 834
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1282[] = {
- 31,
- -1, 1, 440,
- 9, 0, 1409,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1283[] = {
- 1,
- -1, 1, 881
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1284[] = {
- 2,
- -1, 3, 1283,
- 15, 0, 1411
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1285[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1286[] = {
- 27,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 332,
- 68, 1, 332,
- 70, 1, 332,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1287[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 314,
- 58, 0, 196,
- 59, 0, 788,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 314,
- 70, 1, 314,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1288[] = {
3,
- -1, 1, 437,
- 12, 0, 1415,
- 89, 0, 1416
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1289[] = {
- 4,
- -1, 1, 439,
- 12, 0, 1417,
- 88, 0, 48,
- 89, 0, 1418
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1290[] = {
- 2,
- -1, 1, 192,
- 24, 1, 867
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1291[] = {
- 2,
- -1, 1, 183,
- 24, 1, 858
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1292[] = {
- 33,
- -1, 1, 440,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 9, 0, 143,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1, 0, 2
};
static int parser_action_row1293[] = {
- 2,
- -1, 3, 1292,
- 24, 0, 1422
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1294[] = {
- 2,
- -1, 1, 745,
- 87, 0, 550
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1295[] = {
- 1,
- -1, 1, 146
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1296[] = {
- 1,
- -1, 1, 582
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1297[] = {
- 1,
- -1, 1, 743
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1298[] = {
- 1,
- -1, 1, 340
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1299[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1300[] = {
- 2,
- -1, 3, 1299,
- 53, 0, 1425
+ 3,
+ -1, 1, 590,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1301[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 456,
+ 97, 0, 1449
};
static int parser_action_row1302[] = {
- 1,
- -1, 1, 1017
+ 2,
+ -1, 1, 454,
+ 58, 0, 215
};
static int parser_action_row1303[] = {
- 2,
- -1, 1, 407,
- 56, 0, 1300
+ 1,
+ -1, 1, 1064
};
static int parser_action_row1304[] = {
2,
- -1, 1, 384,
- 87, 0, 185
+ -1, 1, 30,
+ 13, 0, 32
};
static int parser_action_row1305[] = {
- 1,
- -1, 1, 142
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1451,
+ 95, 0, 3
};
static int parser_action_row1306[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 118,
+ 71, 0, 1453
};
static int parser_action_row1307[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 404,
+ 57, 0, 829
};
static int parser_action_row1308[] = {
1,
- -1, 1, 371
+ -1, 1, 117
};
static int parser_action_row1309[] = {
- 3,
- -1, 1, 458,
+ 4,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2
+ 1, 0, 2,
+ 57, 0, 829
};
static int parser_action_row1310[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row1311[] = {
1,
- -1, 1, 502
+ -1, 1, 1066
};
static int parser_action_row1312[] = {
- 2,
- -1, 3, 1311,
- 88, 0, 1432
+ 1,
+ -1, 1, 113
};
static int parser_action_row1313[] = {
- 2,
- -1, 1, 745,
- 87, 0, 550
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 56, 0, 1309
};
static int parser_action_row1314[] = {
- 3,
- -1, 1, 529,
- 52, 0, 253,
- 70, 0, 1434
+ 1,
+ -1, 1, 128
};
static int parser_action_row1315[] = {
- 1,
- -1, 1, 526
+ 2,
+ -1, 1, 122,
+ 56, 0, 1460
};
static int parser_action_row1316[] = {
- 3,
- -1, 3, 1315,
- 47, 0, 1311,
- 88, 0, 1312
+ 1,
+ -1, 1, 126
};
static int parser_action_row1317[] = {
- 3,
- -1, 1, 531,
- 68, 1, 534,
- 70, 1, 534
+ 1,
+ -1, 1, 127
};
static int parser_action_row1318[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 131,
+ 73, 0, 1463
};
static int parser_action_row1319[] = {
1,
- -1, 1, 551
+ -1, 1, 129
};
static int parser_action_row1320[] = {
- 1,
- -1, 1, 540
+ 9,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 4, 1, 80,
+ 9, 0, 1464,
+ 15, 1, 80,
+ 28, 1, 80,
+ 95, 0, 3,
+ 109, 1, 80
};
static int parser_action_row1321[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 470
};
static int parser_action_row1322[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 491
};
static int parser_action_row1323[] = {
- 21,
- -1, 1, 440,
- 12, 0, 1034,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1324[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 495
};
static int parser_action_row1325[] = {
- 21,
- -1, 1, 440,
- 12, 0, 1034,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 3,
+ -1, 1, 155,
+ 57, 0, 333,
+ 94, 0, 204
};
static int parser_action_row1326[] = {
- 21,
- -1, 1, 440,
- 12, 0, 1034,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 3, 1325,
+ 55, 0, 1468
};
static int parser_action_row1327[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 1, 37,
+ 56, 0, 1469
};
static int parser_action_row1328[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 27
};
static int parser_action_row1329[] = {
- 3,
+ 7,
-1, 3, 1328,
- 47, 0, 1446,
- 88, 0, 1447
+ 10, 0, 1472,
+ 11, 0, 1473,
+ 12, 0, 1474,
+ 16, 0, 1475,
+ 38, 0, 1476,
+ 41, 0, 1477
};
static int parser_action_row1330[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 26,
+ -1, 1, 1003,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1331[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 1, 1008,
+ 49, 0, 197
};
static int parser_action_row1332[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 1, 1005,
+ 49, 0, 197
};
static int parser_action_row1333[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 1007
};
static int parser_action_row1334[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 2,
+ -1, 3, 1333,
+ 11, 0, 1481
};
static int parser_action_row1335[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1336[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 24,
+ -1, 1, 498,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1337[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 24,
+ -1, 1, 499,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1338[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 24,
+ -1, 1, 507,
+ 12, 0, 170,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1339[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 15,
+ -1, 1, 756,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1483,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1340[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 802
};
static int parser_action_row1341[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 1001
};
static int parser_action_row1342[] = {
- 20,
- -1, 1, 440,
- 12, 0, 1034,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ 1,
+ -1, 1, 1010
};
static int parser_action_row1343[] = {
- 5,
- -1, 1, 440,
- 12, 0, 1462,
- 46, 0, 1463,
- 88, 0, 48,
- 89, 0, 1464
+ 1,
+ -1, 1, 1012
};
static int parser_action_row1344[] = {
1,
- -1, 1, 548
+ -1, 1, 1011
};
static int parser_action_row1345[] = {
- 2,
- -1, 1, 546,
- 52, 0, 253
+ 1,
+ -1, 1, 1013
};
static int parser_action_row1346[] = {
1,
- -1, 1, 75
+ -1, 1, 1014
};
static int parser_action_row1347[] = {
- 5,
- -1, 1, 79,
- 18, 0, 214,
- 19, 0, 215,
- 20, 0, 216,
- 21, 0, 217
+ 1,
+ -1, 1, 1015
};
static int parser_action_row1348[] = {
1,
- -1, 1, 1016
+ -1, 1, 421
};
static int parser_action_row1349[] = {
- 1,
- -1, 1, 114
+ 3,
+ -1, 3, 1348,
+ 41, 0, 300,
+ 98, 0, 1486
};
static int parser_action_row1350[] = {
- 2,
- -1, 1, 113,
- 68, 0, 1470
+ 22,
+ -1, 1, 455,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 1487
};
static int parser_action_row1351[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 806
};
static int parser_action_row1352[] = {
1,
- -1, 1, 104
+ -1, 1, 1002
};
static int parser_action_row1353[] = {
- 2,
- -1, 3, 1352,
- 89, 0, 1076
+ 1,
+ -1, 1, 803
};
static int parser_action_row1354[] = {
- 1,
- -1, 1, 1000
+ 3,
+ -1, 1, 739,
+ 54, 0, 244,
+ 73, 0, 1488
};
static int parser_action_row1355[] = {
1,
- -1, 1, 108
+ -1, 1, 424
};
static int parser_action_row1356[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 800,
+ 56, 0, 1402
};
static int parser_action_row1357[] = {
1,
- -1, 1, 1001
+ -1, 1, 804
};
static int parser_action_row1358[] = {
- 2,
- -1, 1, 117,
- 56, 0, 1355
+ 23,
+ -1, 1, 457,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 1491
};
static int parser_action_row1359[] = {
- 20,
- -1, 3, 1358,
- 46, 0, 1475,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 48,
- 89, 0, 611
-};
-static int parser_action_row1360[] = {
1,
- -1, 1, 469
+ -1, 1, 365
+};
+static int parser_action_row1360[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1361[] = {
- 1,
- -1, 1, 464
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1362[] = {
1,
- -1, 1, 39
+ -1, 1, 211
};
static int parser_action_row1363[] = {
- 2,
- -1, 1, 149,
- 57, 0, 306
+ 1,
+ -1, 1, 230
};
static int parser_action_row1364[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 215
};
static int parser_action_row1365[] = {
1,
- -1, 1, 995
+ -1, 1, 234
};
static int parser_action_row1366[] = {
- 2,
- -1, 3, 1365,
- 55, 0, 1479
+ 1,
+ -1, 1, 214
};
static int parser_action_row1367[] = {
- 4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 56, 0, 1363
+ 1,
+ -1, 1, 233
};
static int parser_action_row1368[] = {
- 1,
- -1, 1, 27
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1369[] = {
- 7,
- -1, 3, 1368,
- 10, 0, 1482,
- 11, 0, 1483,
- 12, 0, 1484,
- 16, 0, 1485,
- 38, 0, 1486,
- 41, 0, 1487
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1370[] = {
- 25,
- -1, 1, 941,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1369,
+ 24, 0, 1497
};
static int parser_action_row1371[] = {
- 2,
- -1, 1, 946,
- 49, 0, 178
+ 1,
+ -1, 1, 772
};
static int parser_action_row1372[] = {
- 2,
- -1, 1, 943,
- 49, 0, 178
+ 1,
+ -1, 1, 776
};
static int parser_action_row1373[] = {
- 1,
- -1, 1, 945
+ 2,
+ -1, 1, 775,
+ 52, 0, 277
};
static int parser_action_row1374[] = {
- 2,
- -1, 3, 1373,
- 11, 0, 1491
+ 1,
+ -1, 1, 446
};
static int parser_action_row1375[] = {
+ 1,
+ -1, 1, 780
+};
+static int parser_action_row1376[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1376[] = {
- 23,
- -1, 1, 470,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
static int parser_action_row1377[] = {
- 23,
- -1, 1, 471,
- 12, 0, 156,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1378[] = {
- 12,
- -1, 1, 706,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 1493,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 2,
+ -1, 3, 1377,
+ 23, 0, 1501
};
static int parser_action_row1379[] = {
- 1,
- -1, 1, 750
+ 2,
+ -1, 3, 1378,
+ 15, 0, 1502
};
static int parser_action_row1380[] = {
- 1,
- -1, 1, 939
+ 2,
+ -1, 3, 1379,
+ 28, 0, 1503
};
static int parser_action_row1381[] = {
- 1,
- -1, 1, 948
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1381,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1382[] = {
- 1,
- -1, 1, 950
+ 2,
+ -1, 1, 158,
+ 24, 1, 896
};
static int parser_action_row1383[] = {
- 1,
- -1, 1, 949
+ 31,
+ -1, 1, 458,
+ 9, 0, 1505,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1384[] = {
1,
- -1, 1, 951
+ -1, 1, 943
};
static int parser_action_row1385[] = {
- 1,
- -1, 1, 952
+ 2,
+ -1, 3, 1384,
+ 15, 0, 1507
};
static int parser_action_row1386[] = {
- 1,
- -1, 1, 953
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1387[] = {
- 1,
- -1, 1, 402
+ 27,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 351,
+ 73, 1, 351,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1388[] = {
- 3,
- -1, 3, 1387,
- 41, 0, 275,
- 90, 0, 1496
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 333,
+ 58, 0, 215,
+ 59, 0, 846,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 333,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1389[] = {
- 18,
- -1, 1, 437,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 1497
+ 3,
+ -1, 1, 455,
+ 12, 0, 1511,
+ 97, 0, 1512
};
static int parser_action_row1390[] = {
- 1,
- -1, 1, 754
+ 4,
+ -1, 1, 457,
+ 12, 0, 1513,
+ 96, 0, 53,
+ 97, 0, 1514
};
static int parser_action_row1391[] = {
1,
- -1, 1, 940
+ -1, 1, 260
};
static int parser_action_row1392[] = {
- 1,
- -1, 1, 751
+ 2,
+ -1, 1, 198,
+ 24, 1, 929
};
static int parser_action_row1393[] = {
- 4,
- -1, 1, 689,
- 54, 0, 223,
- 68, 0, 297,
- 70, 0, 1498
+ 2,
+ -1, 1, 189,
+ 24, 1, 920
};
static int parser_action_row1394[] = {
- 1,
- -1, 1, 405
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 157,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1395[] = {
2,
- -1, 1, 748,
- 56, 0, 1300
+ -1, 3, 1394,
+ 24, 0, 1518
};
static int parser_action_row1396[] = {
- 1,
- -1, 1, 752
+ 2,
+ -1, 1, 797,
+ 94, 0, 594
};
static int parser_action_row1397[] = {
- 19,
- -1, 1, 439,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 88, 0, 48,
- 89, 0, 1501
+ 1,
+ -1, 1, 152
};
static int parser_action_row1398[] = {
- 2,
- -1, 3, 1397,
- 45, 0, 1503
+ 1,
+ -1, 1, 624
};
static int parser_action_row1399[] = {
- 2,
- -1, 3, 1398,
- 53, 0, 1504
+ 1,
+ -1, 1, 795
};
static int parser_action_row1400[] = {
1,
- -1, 1, 207
+ -1, 1, 359
};
static int parser_action_row1401[] = {
- 1,
- -1, 1, 226
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1402[] = {
+ 2,
+ -1, 3, 1401,
+ 53, 0, 1521
+};
+static int parser_action_row1403[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1403[] = {
- 1,
- -1, 1, 724
-};
static int parser_action_row1404[] = {
- 2,
- -1, 3, 1403,
- 45, 0, 1506
+ 1,
+ -1, 1, 1082
};
static int parser_action_row1405[] = {
2,
- -1, 3, 1404,
- 53, 0, 1507
+ -1, 1, 426,
+ 56, 0, 1402
};
static int parser_action_row1406[] = {
- 34,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 827,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 24, 0, 831,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1407[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 968,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 148
};
static int parser_action_row1408[] = {
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1409[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1409[] = {
- 1,
- -1, 1, 882
-};
static int parser_action_row1410[] = {
- 2,
- -1, 1, 151,
- 24, 1, 833
+ 1,
+ -1, 1, 392
};
static int parser_action_row1411[] = {
- 2,
- -1, 1, 150,
- 24, 1, 832
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1412[] = {
- 33,
- -1, 1, 440,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 9, 0, 968,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1, 0, 2
};
static int parser_action_row1413[] = {
- 2,
- -1, 1, 194,
- 24, 1, 869
+ 1,
+ -1, 1, 534
};
static int parser_action_row1414[] = {
2,
- -1, 1, 186,
- 24, 1, 861
+ -1, 3, 1413,
+ 96, 0, 1528
};
static int parser_action_row1415[] = {
2,
- -1, 1, 177,
- 24, 1, 852
+ -1, 1, 797,
+ 94, 0, 594
};
static int parser_action_row1416[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 569,
+ 52, 0, 277,
+ 73, 0, 1530
};
static int parser_action_row1417[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 316,
- 59, 0, 940,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 316,
- 70, 1, 316,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 566
};
static int parser_action_row1418[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 3, 1417,
+ 47, 0, 1413,
+ 96, 0, 1414
};
static int parser_action_row1419[] = {
- 37,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 320,
- 58, 0, 196,
- 59, 0, 945,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 320,
- 70, 1, 320,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 1, 571,
+ 73, 1, 574
};
static int parser_action_row1420[] = {
3,
- -1, 1, 438,
- 12, 0, 1518,
- 89, 0, 1519
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1421[] = {
1,
- -1, 1, 261
+ -1, 1, 591
};
static int parser_action_row1422[] = {
- 2,
- -1, 3, 1421,
- 49, 0, 178
+ 1,
+ -1, 1, 580
};
static int parser_action_row1423[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1424[] = {
- 1,
- -1, 1, 583
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1425[] = {
- 3,
+ 22,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1426[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1427[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 22,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1428[] = {
- 1,
- -1, 1, 1018
+ 22,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1429[] = {
- 1,
- -1, 1, 143
+ 3,
+ -1, 3, 1428,
+ 47, 0, 1540,
+ 96, 0, 1541
};
static int parser_action_row1430[] = {
- 2,
- -1, 1, 369,
- 24, 0, 1422
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1431[] = {
- 2,
- -1, 3, 1430,
- 15, 0, 1525
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1432[] = {
- 2,
- -1, 3, 1431,
- 23, 0, 1526
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1433[] = {
- 2,
- -1, 1, 745,
- 87, 0, 550
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1434[] = {
- 1,
- -1, 1, 755
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1435[] = {
- 3,
+ 21,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1436[] = {
- 1,
- -1, 1, 528
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1437[] = {
- 2,
- -1, 3, 1436,
- 70, 0, 1434
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1438[] = {
- 5,
- -1, 1, 440,
- 12, 0, 1462,
- 46, 0, 1463,
- 88, 0, 48,
- 89, 0, 1464
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1439[] = {
- 1,
- -1, 1, 360
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1440[] = {
- 1,
- -1, 1, 359
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1441[] = {
- 1,
- -1, 1, 498
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1442[] = {
21,
- -1, 1, 440,
- 12, 0, 1034,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1443[] = {
- 1,
- -1, 1, 497
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1444[] = {
- 1,
- -1, 1, 500
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1445[] = {
- 3,
- -1, 1, 508,
- 71, 0, 1204,
- 72, 0, 1205
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1446[] = {
- 3,
- -1, 1, 511,
- 71, 0, 1204,
- 72, 0, 1205
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1447[] = {
- 2,
- -1, 3, 1446,
- 88, 0, 1531
+ 21,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1448[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 5,
+ -1, 1, 458,
+ 12, 0, 1561,
+ 46, 0, 1562,
+ 96, 0, 53,
+ 97, 0, 1563
};
static int parser_action_row1449[] = {
1,
- -1, 1, 513
+ -1, 1, 588
};
static int parser_action_row1450[] = {
- 4,
- -1, 1, 515,
- 73, 0, 1213,
- 75, 0, 1214,
- 76, 0, 1215
+ 2,
+ -1, 1, 586,
+ 52, 0, 277
};
static int parser_action_row1451[] = {
- 4,
- -1, 1, 516,
- 73, 0, 1213,
- 75, 0, 1214,
- 76, 0, 1215
+ 5,
+ -1, 1, 81,
+ 18, 0, 236,
+ 19, 0, 237,
+ 20, 0, 238,
+ 21, 0, 239
};
static int parser_action_row1452[] = {
- 3,
- -1, 1, 504,
- 71, 0, 1204,
- 72, 0, 1205
+ 1,
+ -1, 1, 77
};
static int parser_action_row1453[] = {
- 3,
- -1, 1, 505,
- 71, 0, 1204,
- 72, 0, 1205
+ 1,
+ -1, 1, 1065
};
static int parser_action_row1454[] = {
- 3,
- -1, 1, 506,
- 71, 0, 1204,
- 72, 0, 1205
+ 1,
+ -1, 1, 120
};
static int parser_action_row1455[] = {
- 3,
- -1, 1, 507,
- 71, 0, 1204,
- 72, 0, 1205
+ 2,
+ -1, 1, 119,
+ 71, 0, 1569
};
static int parser_action_row1456[] = {
3,
- -1, 1, 509,
- 71, 0, 1204,
- 72, 0, 1205
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1457[] = {
- 3,
- -1, 1, 510,
- 71, 0, 1204,
- 72, 0, 1205
+ 1,
+ -1, 1, 110
};
static int parser_action_row1458[] = {
- 3,
- -1, 1, 512,
- 71, 0, 1204,
- 72, 0, 1205
+ 2,
+ -1, 3, 1457,
+ 97, 0, 1148
};
static int parser_action_row1459[] = {
1,
- -1, 1, 518
+ -1, 1, 1067
};
static int parser_action_row1460[] = {
1,
- -1, 1, 519
+ -1, 1, 114
};
static int parser_action_row1461[] = {
- 1,
- -1, 1, 520
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1462[] = {
1,
- -1, 1, 522
+ -1, 1, 1068
};
static int parser_action_row1463[] = {
2,
- -1, 1, 555,
- 52, 0, 253
+ -1, 1, 123,
+ 56, 0, 1460
};
static int parser_action_row1464[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 24,
+ -1, 3, 1463,
+ 46, 0, 1574,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
static int parser_action_row1465[] = {
- 3,
- -1, 1, 537,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 497
};
static int parser_action_row1466[] = {
- 2,
- -1, 3, 1465,
- 90, 0, 1536
+ 1,
+ -1, 1, 492
};
static int parser_action_row1467[] = {
- 2,
- -1, 1, 437,
- 89, 0, 1537
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1468[] = {
- 3,
- -1, 1, 439,
- 88, 0, 48,
- 89, 0, 1538
+ 2,
+ -1, 1, 155,
+ 57, 0, 333
};
static int parser_action_row1469[] = {
- 1,
- -1, 1, 544
+ 6,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 28, 0, 84,
+ 95, 0, 3,
+ 109, 0, 85
};
static int parser_action_row1470[] = {
- 4,
- -1, 3, 1469,
- 6, 0, 734,
- 17, 0, 735,
- 89, 0, 736
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1471[] = {
1,
- -1, 1, 115
+ -1, 1, 1060
};
static int parser_action_row1472[] = {
- 1,
- -1, 1, 103
+ 2,
+ -1, 1, 38,
+ 56, 0, 1469
};
static int parser_action_row1473[] = {
- 1,
- -1, 1, 110
+ 23,
+ -1, 3, 1472,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
static int parser_action_row1474[] = {
- 21,
+ 2,
-1, 3, 1473,
- 41, 0, 1234,
- 47, 0, 365,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 389,
- 89, 0, 611
+ 96, 0, 1583
};
static int parser_action_row1475[] = {
- 1,
- -1, 1, 1002
+ 27,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 54, 0, 640,
+ 57, 0, 829,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
static int parser_action_row1476[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 1475,
+ 97, 0, 1586
};
static int parser_action_row1477[] = {
- 1,
- -1, 1, 124
+ 27,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 54, 0, 640,
+ 57, 0, 829,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 53,
+ 97, 0, 660
};
static int parser_action_row1478[] = {
- 1,
- -1, 1, 40
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1479[] = {
- 2,
- -1, 3, 1478,
- 88, 0, 1245
+ 1,
+ -1, 1, 1004
};
static int parser_action_row1480[] = {
1,
- -1, 1, 35
+ -1, 1, 1009
};
static int parser_action_row1481[] = {
1,
- -1, 1, 996
+ -1, 1, 1006
};
static int parser_action_row1482[] = {
- 2,
+ 3,
-1, 3, 1481,
- 55, 0, 1544
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row1483[] = {
- 19,
- -1, 3, 1482,
- 54, 0, 595,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 48,
- 89, 0, 611
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1484[] = {
- 2,
- -1, 3, 1483,
- 88, 0, 1546
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1485[] = {
- 23,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 770,
- 54, 0, 595,
- 57, 0, 771,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 48,
- 89, 0, 611
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1486[] = {
- 2,
- -1, 3, 1485,
- 89, 0, 1549
+ 13,
+ -1, 1, 755,
+ 59, 0, 1594,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1487[] = {
- 23,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 770,
- 54, 0, 595,
- 57, 0, 771,
- 71, 0, 596,
- 72, 0, 597,
- 73, 0, 598,
- 74, 0, 599,
- 75, 0, 600,
- 76, 0, 601,
- 77, 0, 602,
- 78, 0, 603,
- 79, 0, 604,
- 80, 0, 605,
- 81, 0, 606,
- 82, 0, 607,
- 83, 0, 608,
- 84, 0, 609,
- 85, 0, 610,
- 88, 0, 48,
- 89, 0, 611
+ 13,
+ -1, 1, 746,
+ 59, 0, 1596,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1488[] = {
+ 14,
+ -1, 1, 758,
+ 52, 0, 277,
+ 59, 0, 1598,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1489[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1489[] = {
- 1,
- -1, 1, 942
-};
static int parser_action_row1490[] = {
- 1,
- -1, 1, 947
+ 13,
+ -1, 1, 769,
+ 59, 0, 1602,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1491[] = {
- 1,
- -1, 1, 944
+ 2,
+ -1, 1, 801,
+ 56, 0, 1402
};
static int parser_action_row1492[] = {
- 3,
- -1, 3, 1491,
- 47, 0, 365,
- 88, 0, 366
+ 15,
+ -1, 1, 762,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1604,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1493[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 22,
+ -1, 1, 456,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 1607
};
static int parser_action_row1494[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1493,
+ 45, 0, 1608
};
static int parser_action_row1495[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1494,
+ 53, 0, 1609
};
static int parser_action_row1496[] = {
- 10,
- -1, 1, 705,
- 59, 0, 1557,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 213
};
static int parser_action_row1497[] = {
- 10,
- -1, 1, 696,
- 59, 0, 1559,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 232
};
static int parser_action_row1498[] = {
- 11,
- -1, 1, 708,
- 52, 0, 253,
- 59, 0, 1561,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
-};
-static int parser_action_row1499[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
+static int parser_action_row1499[] = {
+ 1,
+ -1, 1, 774
+};
static int parser_action_row1500[] = {
- 10,
- -1, 1, 719,
- 59, 0, 1565,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 2,
+ -1, 3, 1499,
+ 45, 0, 1611
};
static int parser_action_row1501[] = {
2,
- -1, 1, 749,
- 56, 0, 1300
+ -1, 3, 1500,
+ 53, 0, 1612
};
static int parser_action_row1502[] = {
- 12,
- -1, 1, 712,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 1567,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 35,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 886,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 24, 0, 890,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1503[] = {
- 18,
- -1, 1, 438,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 1570
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1035,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1504[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
static int parser_action_row1505[] = {
1,
- -1, 1, 344
+ -1, 1, 944
};
static int parser_action_row1506[] = {
- 21,
- -1, 1, 440,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 1, 157,
+ 24, 1, 895
};
static int parser_action_row1507[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 156,
+ 24, 1, 894
};
static int parser_action_row1508[] = {
- 1,
- -1, 1, 728
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1035,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1509[] = {
2,
- -1, 3, 1508,
- 24, 0, 1574
+ -1, 1, 200,
+ 24, 1, 931
};
static int parser_action_row1510[] = {
- 1,
- -1, 1, 876
+ 2,
+ -1, 1, 192,
+ 24, 1, 923
};
static int parser_action_row1511[] = {
2,
- -1, 3, 1510,
- 49, 0, 178
+ -1, 1, 183,
+ 24, 1, 914
};
static int parser_action_row1512[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1513[] = {
- 1,
- -1, 1, 880
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 335,
+ 59, 0, 1007,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 335,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1514[] = {
- 2,
- -1, 3, 1513,
- 49, 0, 178
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1515[] = {
- 2,
- -1, 1, 188,
- 24, 1, 863
+ 40,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 339,
+ 58, 0, 215,
+ 59, 0, 1012,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 339,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1516[] = {
- 2,
- -1, 1, 178,
- 24, 1, 853
+ 3,
+ -1, 1, 456,
+ 12, 0, 1623,
+ 97, 0, 1624
};
static int parser_action_row1517[] = {
- 2,
- -1, 1, 190,
- 24, 1, 865
+ 1,
+ -1, 1, 272
};
static int parser_action_row1518[] = {
2,
- -1, 1, 180,
- 24, 1, 855
+ -1, 3, 1517,
+ 49, 0, 197
};
static int parser_action_row1519[] = {
- 24,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 451,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1520[] = {
- 36,
- -1, 1, 423,
- 12, 0, 107,
- 22, 0, 108,
- 31, 0, 109,
- 38, 0, 110,
- 40, 0, 111,
- 41, 1, 440,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 48, 0, 116,
- 52, 0, 117,
- 54, 1, 318,
- 59, 0, 1112,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205,
- 68, 1, 318,
- 70, 1, 318,
- 71, 0, 118,
- 72, 0, 119,
- 88, 0, 48,
- 89, 0, 120,
- 90, 1, 440,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 1,
+ -1, 1, 625
};
static int parser_action_row1521[] = {
- 1,
- -1, 1, 260
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1522[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1523[] = {
- 2,
- -1, 3, 1522,
- 53, 0, 1581
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1524[] = {
1,
- -1, 1, 386
+ -1, 1, 1083
};
static int parser_action_row1525[] = {
1,
- -1, 1, 408
+ -1, 1, 149
};
static int parser_action_row1526[] = {
- 24,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 411,
- 27, 0, 412,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 390,
+ 24, 0, 1518
};
static int parser_action_row1527[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 1526,
+ 15, 0, 1630
};
static int parser_action_row1528[] = {
- 1,
- -1, 1, 756
+ 2,
+ -1, 3, 1527,
+ 23, 0, 1631
};
static int parser_action_row1529[] = {
- 3,
- -1, 3, 1528,
- 88, 0, 48,
- 89, 0, 1584
+ 2,
+ -1, 1, 797,
+ 94, 0, 594
};
static int parser_action_row1530[] = {
- 2,
- -1, 3, 1529,
- 90, 0, 1587
+ 1,
+ -1, 1, 807
};
static int parser_action_row1531[] = {
- 1,
- -1, 1, 499
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1532[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 568
};
static int parser_action_row1533[] = {
- 1,
- -1, 1, 492
+ 2,
+ -1, 3, 1532,
+ 73, 0, 1530
};
static int parser_action_row1534[] = {
- 1,
- -1, 1, 553
+ 5,
+ -1, 1, 458,
+ 12, 0, 1561,
+ 46, 0, 1562,
+ 96, 0, 53,
+ 97, 0, 1563
};
static int parser_action_row1535[] = {
- 3,
- -1, 3, 1534,
- 31, 0, 1589,
- 52, 0, 1590
+ 1,
+ -1, 1, 381
};
static int parser_action_row1536[] = {
1,
- -1, 1, 535
+ -1, 1, 380
};
static int parser_action_row1537[] = {
1,
- -1, 1, 533
+ -1, 1, 530
};
static int parser_action_row1538[] = {
- 2,
- -1, 1, 541,
- 52, 0, 253
+ 22,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
};
static int parser_action_row1539[] = {
- 3,
- -1, 1, 549,
- 52, 0, 253,
- 58, 0, 196
+ 1,
+ -1, 1, 529
};
static int parser_action_row1540[] = {
- 2,
- -1, 1, 438,
- 89, 0, 1593
+ 1,
+ -1, 1, 532
};
static int parser_action_row1541[] = {
- 52,
- -1, 1, 440,
- 0, 0, 83,
- 1, 0, 84,
- 12, 0, 107,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 108,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 109,
- 33, 0, 1369,
- 34, 0, 1370,
- 35, 0, 1371,
- 36, 0, 1372,
- 37, 0, 38,
- 38, 0, 110,
- 40, 0, 111,
- 42, 0, 112,
- 43, 0, 113,
- 44, 0, 114,
- 45, 0, 115,
- 47, 0, 365,
- 48, 0, 116,
- 50, 0, 44,
- 51, 0, 1373,
- 52, 0, 1594,
- 54, 0, 575,
- 71, 0, 1375,
- 72, 0, 1376,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 1377,
- 91, 0, 121,
- 92, 0, 122,
- 93, 0, 123,
- 94, 0, 124,
- 95, 0, 54,
- 98, 0, 125
+ 2,
+ -1, 3, 1540,
+ 96, 0, 1636
};
static int parser_action_row1542[] = {
- 1,
- -1, 1, 119
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1543[] = {
- 5,
- -1, 3, 1542,
- 31, 0, 1598,
- 47, 0, 1599,
- 52, 0, 1600,
- 88, 0, 366
+ 1,
+ -1, 1, 543
};
static int parser_action_row1544[] = {
- 1,
- -1, 1, 38
+ 2,
+ -1, 1, 545,
+ 81, 0, 1288
};
static int parser_action_row1545[] = {
- 1,
- -1, 1, 36
+ 2,
+ -1, 1, 536,
+ 80, 0, 1280
};
static int parser_action_row1546[] = {
- 5,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 770,
- 57, 0, 771
+ 2,
+ -1, 1, 537,
+ 80, 0, 1280
};
static int parser_action_row1547[] = {
2,
- -1, 3, 1546,
- 57, 0, 771
+ -1, 1, 538,
+ 80, 0, 1280
};
static int parser_action_row1548[] = {
- 3,
- -1, 3, 1547,
- 14, 0, 1604,
- 15, 0, 1605
+ 2,
+ -1, 1, 539,
+ 80, 0, 1280
};
static int parser_action_row1549[] = {
- 5,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 770,
- 57, 0, 771
+ 2,
+ -1, 1, 540,
+ 80, 0, 1280
};
static int parser_action_row1550[] = {
2,
- -1, 1, 149,
- 57, 0, 306
+ -1, 1, 541,
+ 80, 0, 1280
};
static int parser_action_row1551[] = {
- 4,
- -1, 1, 118,
- 4, 0, 918,
- 14, 0, 919,
- 15, 0, 1609
+ 2,
+ -1, 1, 542,
+ 80, 0, 1280
};
static int parser_action_row1552[] = {
- 5,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 52, 0, 770,
- 57, 0, 771
+ 2,
+ -1, 1, 547,
+ 82, 0, 1289
};
static int parser_action_row1553[] = {
3,
- -1, 3, 1552,
- 47, 0, 365,
- 88, 0, 366
+ -1, 1, 549,
+ 88, 0, 1290,
+ 91, 0, 1291
};
static int parser_action_row1554[] = {
- 2,
- -1, 3, 1553,
- 57, 0, 1615
+ 3,
+ -1, 1, 551,
+ 74, 0, 1292,
+ 75, 0, 1293
};
static int parser_action_row1555[] = {
- 2,
- -1, 3, 1554,
- 53, 0, 1616
+ 3,
+ -1, 1, 552,
+ 74, 0, 1292,
+ 75, 0, 1293
};
static int parser_action_row1556[] = {
- 1,
- -1, 1, 629
+ 4,
+ -1, 1, 554,
+ 76, 0, 1294,
+ 78, 0, 1295,
+ 79, 0, 1296
};
static int parser_action_row1557[] = {
- 1,
- -1, 1, 648
+ 4,
+ -1, 1, 555,
+ 76, 0, 1294,
+ 78, 0, 1295,
+ 79, 0, 1296
};
static int parser_action_row1558[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 557
};
static int parser_action_row1559[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 558
};
static int parser_action_row1560[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 559
};
static int parser_action_row1561[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 561
};
static int parser_action_row1562[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 595,
+ 52, 0, 277
};
static int parser_action_row1563[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1564[] = {
- 10,
- -1, 1, 707,
- 59, 0, 1623,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 3,
+ -1, 1, 577,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1565[] = {
- 21,
- -1, 1, 440,
- 12, 0, 675,
- 46, 0, 676,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 88, 0, 48,
- 89, 0, 1625
+ 2,
+ -1, 3, 1564,
+ 98, 0, 1641
};
static int parser_action_row1566[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 455,
+ 97, 0, 1642
};
static int parser_action_row1567[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 457,
+ 96, 0, 53,
+ 97, 0, 1643
};
static int parser_action_row1568[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 584
};
static int parser_action_row1569[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 3, 1568,
+ 6, 0, 792,
+ 17, 0, 793,
+ 97, 0, 794
};
static int parser_action_row1570[] = {
- 10,
- -1, 1, 711,
- 59, 0, 1634,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 121
};
static int parser_action_row1571[] = {
- 11,
- -1, 1, 710,
- 52, 0, 253,
- 59, 0, 1636,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 109
};
static int parser_action_row1572[] = {
- 2,
- -1, 3, 1571,
- 53, 0, 1639
+ 1,
+ -1, 1, 116
};
static int parser_action_row1573[] = {
- 1,
- -1, 1, 657
+ 25,
+ -1, 3, 1572,
+ 41, 0, 1313,
+ 47, 0, 396,
+ 54, 0, 640,
+ 74, 0, 641,
+ 75, 0, 642,
+ 76, 0, 643,
+ 77, 0, 644,
+ 78, 0, 645,
+ 79, 0, 646,
+ 80, 0, 647,
+ 81, 0, 648,
+ 82, 0, 649,
+ 83, 0, 650,
+ 84, 0, 651,
+ 85, 0, 652,
+ 86, 0, 653,
+ 87, 0, 654,
+ 88, 0, 655,
+ 89, 0, 656,
+ 90, 0, 657,
+ 91, 0, 658,
+ 92, 0, 659,
+ 96, 0, 424,
+ 97, 0, 660
};
static int parser_action_row1574[] = {
- 2,
- -1, 3, 1573,
- 53, 0, 1640
+ 1,
+ -1, 1, 1069
};
static int parser_action_row1575[] = {
- 33,
- -1, 1, 440,
+ 3,
+ -1, 1, 487,
0, 0, 1,
- 1, 0, 2,
- 9, 0, 1280,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1, 0, 2
};
static int parser_action_row1576[] = {
- 2,
- -1, 1, 258,
- 24, 1, 875
+ 1,
+ -1, 1, 130
};
static int parser_action_row1577[] = {
+ 1,
+ -1, 1, 41
+};
+static int parser_action_row1578[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1578[] = {
- 2,
- -1, 1, 262,
- 24, 1, 879
-};
static int parser_action_row1579[] = {
2,
- -1, 1, 189,
- 24, 1, 864
+ -1, 3, 1578,
+ 9, 0, 1649
};
static int parser_action_row1580[] = {
- 2,
- -1, 1, 179,
- 24, 1, 854
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row1581[] = {
- 1,
- -1, 1, 273
+ 2,
+ -1, 3, 1580,
+ 96, 0, 1324
};
static int parser_action_row1582[] = {
- 2,
- -1, 1, 384,
- 87, 0, 185
+ 1,
+ -1, 1, 1061
};
static int parser_action_row1583[] = {
- 1,
- -1, 1, 370
+ 5,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 57, 0, 829
};
static int parser_action_row1584[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1583,
+ 57, 0, 829
};
static int parser_action_row1585[] = {
3,
- -1, 1, 558,
- 52, 0, 253,
- 58, 0, 196
+ -1, 3, 1584,
+ 14, 0, 1654,
+ 15, 0, 1655
};
static int parser_action_row1586[] = {
- 2,
- -1, 3, 1585,
- 89, 0, 1646
+ 5,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 57, 0, 829
};
static int parser_action_row1587[] = {
- 3,
- -1, 3, 1586,
- 88, 0, 48,
- 89, 0, 1647
+ 2,
+ -1, 1, 155,
+ 57, 0, 333
};
static int parser_action_row1588[] = {
- 3,
- -1, 1, 530,
- 68, 1, 533,
- 70, 1, 533
+ 4,
+ -1, 1, 124,
+ 4, 0, 977,
+ 14, 0, 978,
+ 15, 0, 1659
};
static int parser_action_row1589[] = {
- 1,
- -1, 1, 493
+ 5,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 52, 0, 828,
+ 57, 0, 829
};
static int parser_action_row1590[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 3, 1589,
+ 47, 0, 396,
+ 96, 0, 397
};
static int parser_action_row1591[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 3, 1590,
+ 57, 0, 1665
};
static int parser_action_row1592[] = {
- 1,
- -1, 1, 539
+ 2,
+ -1, 3, 1591,
+ 53, 0, 1666
};
static int parser_action_row1593[] = {
1,
- -1, 1, 547
+ -1, 1, 671
};
static int parser_action_row1594[] = {
- 2,
- -1, 1, 545,
- 52, 0, 253
+ 1,
+ -1, 1, 690
};
static int parser_action_row1595[] = {
- 3,
+ 24,
-1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1596[] = {
- 3,
- -1, 3, 1595,
- 0, 0, 83,
- 1, 0, 84
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1597[] = {
- 1,
- -1, 1, 396
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1598[] = {
- 3,
- -1, 3, 1597,
- 0, 0, 83,
- 1, 0, 84
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1599[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1600[] = {
- 2,
- -1, 1, 129,
- 88, 0, 559
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1601[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 13,
+ -1, 1, 757,
+ 59, 0, 1673,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1602[] = {
- 1,
- -1, 1, 127
+ 25,
+ -1, 1, 458,
+ 12, 0, 730,
+ 46, 0, 731,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 1675
};
static int parser_action_row1603[] = {
- 4,
- -1, 1, 118,
- 4, 0, 918,
- 14, 0, 919,
- 15, 0, 1657
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1604[] = {
- 2,
- -1, 1, 76,
- 14, 0, 910
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1605[] = {
- 4,
- -1, 1, 28,
- 0, 0, 83,
- 1, 0, 84,
- 13, 0, 26
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1606[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1607[] = {
- 2,
- -1, 3, 1606,
- 15, 0, 1665
+ 13,
+ -1, 1, 761,
+ 59, 0, 1684,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1608[] = {
- 3,
- -1, 3, 1607,
- 14, 0, 1604,
- 15, 0, 1666
+ 14,
+ -1, 1, 760,
+ 52, 0, 277,
+ 59, 0, 1686,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1609[] = {
- 4,
- -1, 1, 76,
- 14, 0, 1668,
- 15, 0, 1669,
- 59, 0, 1670
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1610[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 363
};
static int parser_action_row1611[] = {
- 3,
- -1, 1, 118,
- 4, 0, 918,
- 15, 0, 1674
+ 22,
+ -1, 1, 458,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1612[] = {
3,
- -1, 3, 1611,
- 28, 0, 33,
- 101, 0, 56
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1613[] = {
1,
- -1, 1, 49
+ -1, 1, 778
};
static int parser_action_row1614[] = {
- 4,
- -1, 1, 118,
- 4, 0, 918,
- 14, 0, 919,
- 15, 0, 1677
+ 2,
+ -1, 3, 1613,
+ 24, 0, 1692
};
static int parser_action_row1615[] = {
- 2,
- -1, 1, 76,
- 14, 0, 910
+ 1,
+ -1, 1, 938
};
static int parser_action_row1616[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1615,
+ 49, 0, 197
};
static int parser_action_row1617[] = {
- 2,
- -1, 1, 403,
- 87, 0, 185
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1618[] = {
1,
- -1, 1, 628
+ -1, 1, 942
};
static int parser_action_row1619[] = {
- 1,
- -1, 1, 647
+ 2,
+ -1, 3, 1618,
+ 49, 0, 197
};
static int parser_action_row1620[] = {
- 1,
- -1, 1, 619
+ 2,
+ -1, 1, 194,
+ 24, 1, 925
};
static int parser_action_row1621[] = {
- 1,
- -1, 1, 638
+ 2,
+ -1, 1, 184,
+ 24, 1, 915
};
static int parser_action_row1622[] = {
- 1,
- -1, 1, 631
+ 2,
+ -1, 1, 196,
+ 24, 1, 927
};
static int parser_action_row1623[] = {
- 1,
- -1, 1, 650
+ 2,
+ -1, 1, 186,
+ 24, 1, 917
};
static int parser_action_row1624[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 25,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 486,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1625[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 39,
+ -1, 1, 442,
+ 12, 0, 116,
+ 22, 0, 117,
+ 31, 0, 118,
+ 38, 0, 119,
+ 40, 0, 120,
+ 41, 1, 458,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 48, 0, 125,
+ 52, 0, 126,
+ 54, 1, 337,
+ 59, 0, 1187,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227,
+ 73, 1, 337,
+ 74, 0, 127,
+ 75, 0, 128,
+ 83, 0, 129,
+ 96, 0, 53,
+ 97, 0, 130,
+ 98, 1, 458,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1626[] = {
- 12,
- -1, 1, 698,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 1686,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 271
};
static int parser_action_row1627[] = {
- 2,
- -1, 3, 1626,
- 90, 0, 1689
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1628[] = {
- 18,
- -1, 1, 437,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 1690
+ 2,
+ -1, 3, 1627,
+ 53, 0, 1699
};
static int parser_action_row1629[] = {
1,
- -1, 1, 753
+ -1, 1, 407
};
static int parser_action_row1630[] = {
- 19,
- -1, 1, 439,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 88, 0, 48,
- 89, 0, 1691
+ 1,
+ -1, 1, 427
};
static int parser_action_row1631[] = {
- 1,
- -1, 1, 636
+ 25,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 446,
+ 27, 0, 447,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1632[] = {
- 1,
- -1, 1, 655
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1633[] = {
1,
- -1, 1, 635
+ -1, 1, 808
};
static int parser_action_row1634[] = {
- 1,
- -1, 1, 654
+ 3,
+ -1, 3, 1633,
+ 96, 0, 53,
+ 97, 0, 1702
};
static int parser_action_row1635[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1634,
+ 98, 0, 1705
};
static int parser_action_row1636[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 531
};
static int parser_action_row1637[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1638[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 524
};
static int parser_action_row1639[] = {
- 10,
- -1, 1, 709,
- 59, 0, 1697,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 593
};
static int parser_action_row1640[] = {
- 1,
- -1, 1, 345
+ 3,
+ -1, 3, 1639,
+ 31, 0, 1707,
+ 52, 0, 1708
};
static int parser_action_row1641[] = {
1,
- -1, 1, 729
+ -1, 1, 575
};
static int parser_action_row1642[] = {
1,
- -1, 1, 872
+ -1, 1, 573
};
static int parser_action_row1643[] = {
2,
- -1, 3, 1642,
- 15, 0, 1699
+ -1, 1, 581,
+ 52, 0, 277
};
static int parser_action_row1644[] = {
- 1,
- -1, 1, 391
+ 3,
+ -1, 1, 589,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1645[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 2,
+ -1, 1, 456,
+ 97, 0, 1711
};
static int parser_action_row1646[] = {
- 1,
- -1, 1, 557
+ 57,
+ -1, 1, 458,
+ 0, 0, 88,
+ 1, 0, 89,
+ 12, 0, 116,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 117,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 118,
+ 33, 0, 1329,
+ 34, 0, 1330,
+ 35, 0, 1331,
+ 36, 0, 1332,
+ 37, 0, 43,
+ 38, 0, 119,
+ 40, 0, 120,
+ 42, 0, 121,
+ 43, 0, 122,
+ 44, 0, 123,
+ 45, 0, 124,
+ 47, 0, 396,
+ 48, 0, 125,
+ 50, 0, 49,
+ 51, 0, 1333,
+ 52, 0, 1712,
+ 54, 0, 619,
+ 74, 0, 1335,
+ 75, 0, 1336,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 1337,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 95, 0, 90,
+ 96, 0, 424,
+ 97, 0, 1338,
+ 99, 0, 131,
+ 100, 0, 132,
+ 101, 0, 133,
+ 102, 0, 134,
+ 103, 0, 59,
+ 106, 0, 135
};
static int parser_action_row1647[] = {
- 2,
- -1, 1, 560,
- 52, 0, 253
+ 1,
+ -1, 1, 125
};
static int parser_action_row1648[] = {
- 3,
- -1, 1, 564,
- 52, 0, 253,
- 58, 0, 196
+ 5,
+ -1, 3, 1647,
+ 31, 0, 1716,
+ 47, 0, 1717,
+ 52, 0, 1718,
+ 96, 0, 397
};
static int parser_action_row1649[] = {
- 2,
- -1, 3, 1648,
- 89, 0, 1703
+ 1,
+ -1, 1, 42
};
static int parser_action_row1650[] = {
- 2,
- -1, 3, 1649,
- 45, 0, 1704
+ 1,
+ -1, 1, 28
};
static int parser_action_row1651[] = {
- 4,
+ 2,
-1, 3, 1650,
- 31, 0, 1705,
- 47, 0, 365,
- 88, 0, 366
+ 9, 0, 1720
};
static int parser_action_row1652[] = {
1,
- -1, 1, 543
+ -1, 1, 40
};
static int parser_action_row1653[] = {
- 50,
- -1, 1, 440,
- 12, 0, 156,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 157,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 31, 0, 158,
- 33, 0, 368,
- 34, 0, 369,
- 35, 0, 370,
- 36, 0, 371,
- 37, 0, 38,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 47, 0, 365,
- 48, 0, 161,
- 50, 0, 44,
- 51, 0, 372,
- 52, 0, 46,
- 54, 0, 373,
- 71, 0, 374,
- 72, 0, 375,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 87, 0, 185,
- 88, 0, 389,
- 89, 0, 390,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 4,
+ -1, 1, 124,
+ 4, 0, 977,
+ 14, 0, 978,
+ 15, 0, 1721
};
static int parser_action_row1654[] = {
- 1,
- -1, 1, 397
+ 2,
+ -1, 1, 78,
+ 14, 0, 969
};
static int parser_action_row1655[] = {
- 1,
- -1, 1, 400
+ 5,
+ -1, 1, 30,
+ 0, 0, 88,
+ 1, 0, 89,
+ 13, 0, 32,
+ 95, 0, 90
};
static int parser_action_row1656[] = {
- 2,
- -1, 3, 1655,
- 47, 0, 1708
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1657[] = {
- 4,
+ 2,
-1, 3, 1656,
- 31, 0, 1709,
- 47, 0, 1710,
- 88, 0, 366
+ 15, 0, 1729
};
static int parser_action_row1658[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 1657,
+ 14, 0, 1654,
+ 15, 0, 1730
};
static int parser_action_row1659[] = {
- 3,
- -1, 1, 118,
- 4, 0, 918,
- 15, 0, 1713
+ 4,
+ -1, 1, 78,
+ 14, 0, 1732,
+ 15, 0, 1733,
+ 59, 0, 1734
};
static int parser_action_row1660[] = {
- 3,
- -1, 3, 1659,
- 28, 0, 33,
- 101, 0, 56
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1661[] = {
- 1,
- -1, 1, 48
+ 3,
+ -1, 1, 124,
+ 4, 0, 977,
+ 15, 0, 1738
};
static int parser_action_row1662[] = {
- 1,
- -1, 1, 67
+ 3,
+ -1, 3, 1661,
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row1663[] = {
1,
- -1, 1, 77
+ -1, 1, 51
};
static int parser_action_row1664[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 4,
+ -1, 1, 124,
+ 4, 0, 977,
+ 14, 0, 978,
+ 15, 0, 1741
};
static int parser_action_row1665[] = {
2,
- -1, 1, 451,
- 9, 0, 1241
+ -1, 1, 78,
+ 14, 0, 969
};
static int parser_action_row1666[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1667[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 422,
+ 94, 0, 204
};
static int parser_action_row1668[] = {
- 2,
- -1, 3, 1667,
- 15, 0, 1720
+ 1,
+ -1, 1, 670
};
static int parser_action_row1669[] = {
- 4,
- -1, 1, 28,
- 0, 0, 83,
- 1, 0, 84,
- 13, 0, 26
+ 1,
+ -1, 1, 689
};
static int parser_action_row1670[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 661
};
static int parser_action_row1671[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ 1,
+ -1, 1, 680
};
static int parser_action_row1672[] = {
1,
- -1, 1, 57
+ -1, 1, 673
};
static int parser_action_row1673[] = {
- 2,
- -1, 3, 1672,
- 15, 0, 1725
+ 1,
+ -1, 1, 692
};
static int parser_action_row1674[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1675[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1676[] = {
- 3,
- -1, 3, 1675,
- 28, 0, 33,
- 101, 0, 56
+ 15,
+ -1, 1, 748,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1750,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1677[] = {
- 1,
- -1, 1, 68
+ 2,
+ -1, 3, 1676,
+ 98, 0, 1753
};
static int parser_action_row1678[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 22,
+ -1, 1, 455,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 1754
};
static int parser_action_row1679[] = {
- 3,
- -1, 1, 118,
- 4, 0, 918,
- 15, 0, 1730
+ 1,
+ -1, 1, 805
};
static int parser_action_row1680[] = {
- 3,
- -1, 3, 1679,
- 28, 0, 33,
- 101, 0, 56
+ 23,
+ -1, 1, 457,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 96, 0, 53,
+ 97, 0, 1755
};
static int parser_action_row1681[] = {
1,
- -1, 1, 50
+ -1, 1, 678
};
static int parser_action_row1682[] = {
1,
- -1, 1, 41
+ -1, 1, 697
};
static int parser_action_row1683[] = {
1,
- -1, 1, 954
+ -1, 1, 677
};
static int parser_action_row1684[] = {
1,
- -1, 1, 404
+ -1, 1, 696
};
static int parser_action_row1685[] = {
- 1,
- -1, 1, 630
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1686[] = {
- 1,
- -1, 1, 649
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1687[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1688[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1689[] = {
- 10,
- -1, 1, 697,
- 59, 0, 1735,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 13,
+ -1, 1, 759,
+ 59, 0, 1761,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
};
static int parser_action_row1690[] = {
- 10,
- -1, 1, 695,
- 59, 0, 1737,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 2,
+ -1, 3, 1689,
+ 53, 0, 1763
};
static int parser_action_row1691[] = {
- 11,
- -1, 1, 700,
- 52, 0, 253,
- 59, 0, 1739,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 699
};
static int parser_action_row1692[] = {
- 12,
- -1, 1, 704,
- 52, 0, 253,
- 58, 0, 196,
- 59, 0, 1742,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 2,
+ -1, 3, 1691,
+ 53, 0, 1764
};
static int parser_action_row1693[] = {
- 18,
- -1, 1, 438,
- 54, 0, 575,
- 71, 0, 576,
- 72, 0, 577,
- 73, 0, 376,
- 74, 0, 377,
- 75, 0, 378,
- 76, 0, 379,
- 77, 0, 380,
- 78, 0, 381,
- 79, 0, 382,
- 80, 0, 383,
- 81, 0, 384,
- 82, 0, 385,
- 83, 0, 386,
- 84, 0, 387,
- 85, 0, 388,
- 89, 0, 1745
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1381,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1694[] = {
- 1,
- -1, 1, 634
+ 2,
+ -1, 1, 269,
+ 24, 1, 937
};
static int parser_action_row1695[] = {
- 1,
- -1, 1, 653
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1696[] = {
- 1,
- -1, 1, 633
+ 2,
+ -1, 1, 273,
+ 24, 1, 941
};
static int parser_action_row1697[] = {
- 1,
- -1, 1, 652
+ 2,
+ -1, 1, 195,
+ 24, 1, 926
};
static int parser_action_row1698[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 185,
+ 24, 1, 916
};
static int parser_action_row1699[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 284
};
static int parser_action_row1700[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 968,
- 12, 0, 828,
- 15, 0, 829,
- 16, 0, 28,
- 22, 0, 830,
- 25, 0, 832,
- 26, 0, 833,
- 27, 0, 834,
- 33, 0, 835,
- 34, 0, 836,
- 35, 0, 837,
- 36, 0, 838,
- 37, 0, 839,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 840,
- 51, 0, 841,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 842,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 405,
+ 94, 0, 204
};
static int parser_action_row1701[] = {
- 2,
- -1, 3, 1700,
- 24, 0, 1750
+ 1,
+ -1, 1, 391
};
static int parser_action_row1702[] = {
- 1,
- -1, 1, 559
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1703[] = {
- 1,
- -1, 1, 563
+ 3,
+ -1, 1, 598,
+ 52, 0, 277,
+ 58, 0, 215
};
static int parser_action_row1704[] = {
2,
- -1, 1, 562,
- 52, 0, 253
+ -1, 3, 1703,
+ 97, 0, 1770
};
static int parser_action_row1705[] = {
- 1,
- -1, 1, 567
+ 3,
+ -1, 3, 1704,
+ 96, 0, 53,
+ 97, 0, 1771
};
static int parser_action_row1706[] = {
+ 2,
+ -1, 1, 570,
+ 73, 1, 573
+};
+static int parser_action_row1707[] = {
+ 1,
+ -1, 1, 525
+};
+static int parser_action_row1708[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1707[] = {
+static int parser_action_row1709[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1708[] = {
- 2,
- -1, 3, 1707,
- 53, 0, 1754
+static int parser_action_row1710[] = {
+ 1,
+ -1, 1, 579
};
-static int parser_action_row1709[] = {
+static int parser_action_row1711[] = {
1,
- -1, 1, 131
+ -1, 1, 587
};
-static int parser_action_row1710[] = {
+static int parser_action_row1712[] = {
+ 2,
+ -1, 1, 585,
+ 52, 0, 277
+};
+static int parser_action_row1713[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1711[] = {
+static int parser_action_row1714[] = {
4,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2,
- 88, 0, 559
-};
-static int parser_action_row1712[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
-};
-static int parser_action_row1713[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
-};
-static int parser_action_row1714[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ -1, 3, 1713,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row1715[] = {
- 3,
- -1, 3, 1714,
- 28, 0, 33,
- 101, 0, 56
+ 1,
+ -1, 1, 415
};
static int parser_action_row1716[] = {
- 1,
- -1, 1, 55
+ 4,
+ -1, 3, 1715,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
};
static int parser_action_row1717[] = {
- 1,
- -1, 1, 78
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1718[] = {
- 1,
- -1, 1, 63
+ 2,
+ -1, 1, 135,
+ 96, 0, 603
};
static int parser_action_row1719[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1720[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 1,
+ -1, 1, 133
};
static int parser_action_row1721[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 29
};
static int parser_action_row1722[] = {
- 2,
- -1, 1, 74,
- 15, 1, 77
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1723[] = {
3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+ -1, 1, 124,
+ 4, 0, 977,
+ 15, 0, 1782
};
static int parser_action_row1724[] = {
- 2,
- -1, 1, 59,
- 9, 0, 1765
+ 3,
+ -1, 3, 1723,
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row1725[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 50
};
static int parser_action_row1726[] = {
- 33,
- -1, 1, 440,
- 0, 0, 1,
- 1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 69
};
static int parser_action_row1727[] = {
1,
- -1, 1, 51
+ -1, 1, 79
};
static int parser_action_row1728[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
};
static int parser_action_row1729[] = {
- 1,
- -1, 1, 70
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1730[] = {
- 2,
- -1, 1, 451,
- 9, 0, 1241
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1731[] = {
- 33,
- -1, 1, 440,
+ 34,
+ -1, 1, 458,
0, 0, 1,
1, 0, 2,
- 9, 0, 545,
- 12, 0, 25,
- 15, 0, 27,
- 16, 0, 28,
- 22, 0, 29,
- 25, 0, 30,
- 26, 0, 31,
- 27, 0, 32,
- 33, 0, 34,
- 34, 0, 35,
- 35, 0, 36,
- 36, 0, 37,
- 37, 0, 38,
- 38, 0, 39,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 50, 0, 44,
- 51, 0, 45,
- 52, 0, 46,
- 54, 0, 47,
- 88, 0, 48,
- 89, 0, 49,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1732[] = {
- 3,
+ 2,
-1, 3, 1731,
- 28, 0, 33,
- 101, 0, 56
+ 15, 0, 1789
};
static int parser_action_row1733[] = {
- 1,
- -1, 1, 69
+ 5,
+ -1, 1, 30,
+ 0, 0, 88,
+ 1, 0, 89,
+ 13, 0, 32,
+ 95, 0, 90
};
static int parser_action_row1734[] = {
- 1,
- -1, 1, 621
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1735[] = {
- 1,
- -1, 1, 640
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
static int parser_action_row1736[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 59
};
static int parser_action_row1737[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 3, 1736,
+ 15, 0, 1794
};
static int parser_action_row1738[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
};
static int parser_action_row1739[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1740[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 1739,
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row1741[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 1,
+ -1, 1, 70
};
static int parser_action_row1742[] = {
- 10,
- -1, 1, 699,
- 59, 0, 1778,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
};
static int parser_action_row1743[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 1, 124,
+ 4, 0, 977,
+ 15, 0, 1799
};
static int parser_action_row1744[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ 3,
+ -1, 3, 1743,
+ 28, 0, 84,
+ 109, 0, 85
};
static int parser_action_row1745[] = {
- 10,
- -1, 1, 703,
- 59, 0, 1782,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 52
};
static int parser_action_row1746[] = {
- 11,
- -1, 1, 702,
- 52, 0, 253,
- 59, 0, 1784,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ 1,
+ -1, 1, 43
};
static int parser_action_row1747[] = {
1,
- -1, 1, 632
+ -1, 1, 1016
};
static int parser_action_row1748[] = {
1,
- -1, 1, 651
+ -1, 1, 423
};
static int parser_action_row1749[] = {
1,
- -1, 1, 878
+ -1, 1, 672
};
static int parser_action_row1750[] = {
- 2,
- -1, 3, 1749,
- 49, 0, 178
+ 1,
+ -1, 1, 691
};
static int parser_action_row1751[] = {
- 3,
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1752[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1753[] = {
+ 13,
+ -1, 1, 747,
+ 59, 0, 1804,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1754[] = {
+ 13,
+ -1, 1, 745,
+ 59, 0, 1806,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1755[] = {
+ 14,
+ -1, 1, 750,
+ 52, 0, 277,
+ 59, 0, 1808,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1756[] = {
+ 15,
+ -1, 1, 754,
+ 52, 0, 277,
+ 58, 0, 215,
+ 59, 0, 1811,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1757[] = {
+ 22,
+ -1, 1, 456,
+ 54, 0, 619,
+ 74, 0, 620,
+ 75, 0, 621,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 622,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 97, 0, 1814
+};
+static int parser_action_row1758[] = {
+ 1,
+ -1, 1, 676
+};
+static int parser_action_row1759[] = {
+ 1,
+ -1, 1, 695
+};
+static int parser_action_row1760[] = {
+ 1,
+ -1, 1, 675
+};
+static int parser_action_row1761[] = {
+ 1,
+ -1, 1, 694
+};
+static int parser_action_row1762[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1763[] = {
+ 24,
-1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1764[] = {
+ 1,
+ -1, 1, 364
+};
+static int parser_action_row1765[] = {
+ 1,
+ -1, 1, 779
+};
+static int parser_action_row1766[] = {
+ 1,
+ -1, 1, 934
+};
+static int parser_action_row1767[] = {
+ 2,
+ -1, 3, 1766,
+ 15, 0, 1817
+};
+static int parser_action_row1768[] = {
+ 1,
+ -1, 1, 411
+};
+static int parser_action_row1769[] = {
+ 3,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1752[] = {
+static int parser_action_row1770[] = {
1,
- -1, 1, 561
+ -1, 1, 597
};
-static int parser_action_row1753[] = {
+static int parser_action_row1771[] = {
+ 2,
+ -1, 1, 600,
+ 52, 0, 277
+};
+static int parser_action_row1772[] = {
+ 3,
+ -1, 1, 604,
+ 52, 0, 277,
+ 58, 0, 215
+};
+static int parser_action_row1773[] = {
+ 2,
+ -1, 3, 1772,
+ 97, 0, 1821
+};
+static int parser_action_row1774[] = {
+ 2,
+ -1, 3, 1773,
+ 45, 0, 1822
+};
+static int parser_action_row1775[] = {
+ 4,
+ -1, 3, 1774,
+ 31, 0, 1823,
+ 47, 0, 396,
+ 96, 0, 397
+};
+static int parser_action_row1776[] = {
+ 1,
+ -1, 1, 583
+};
+static int parser_action_row1777[] = {
+ 54,
+ -1, 1, 458,
+ 12, 0, 170,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 171,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 31, 0, 172,
+ 33, 0, 399,
+ 34, 0, 400,
+ 35, 0, 401,
+ 36, 0, 402,
+ 37, 0, 43,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 47, 0, 396,
+ 48, 0, 175,
+ 50, 0, 49,
+ 51, 0, 403,
+ 52, 0, 51,
+ 54, 0, 404,
+ 74, 0, 405,
+ 75, 0, 406,
+ 76, 0, 407,
+ 77, 0, 408,
+ 78, 0, 409,
+ 79, 0, 410,
+ 80, 0, 411,
+ 81, 0, 412,
+ 82, 0, 413,
+ 83, 0, 414,
+ 84, 0, 415,
+ 85, 0, 416,
+ 86, 0, 417,
+ 87, 0, 418,
+ 88, 0, 419,
+ 89, 0, 420,
+ 90, 0, 421,
+ 91, 0, 422,
+ 92, 0, 423,
+ 94, 0, 204,
+ 96, 0, 424,
+ 97, 0, 425,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1778[] = {
+ 1,
+ -1, 1, 416
+};
+static int parser_action_row1779[] = {
+ 1,
+ -1, 1, 419
+};
+static int parser_action_row1780[] = {
+ 2,
+ -1, 3, 1779,
+ 47, 0, 1826
+};
+static int parser_action_row1781[] = {
+ 4,
+ -1, 3, 1780,
+ 31, 0, 1827,
+ 47, 0, 1828,
+ 96, 0, 397
+};
+static int parser_action_row1782[] = {
2,
- -1, 3, 1752,
- 45, 0, 1789
+ -1, 1, 469,
+ 9, 0, 1320
+};
+static int parser_action_row1783[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1784[] = {
+ 3,
+ -1, 3, 1783,
+ 28, 0, 84,
+ 109, 0, 85
+};
+static int parser_action_row1785[] = {
+ 1,
+ -1, 1, 57
+};
+static int parser_action_row1786[] = {
+ 5,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 15, 1, 80,
+ 95, 0, 3
+};
+static int parser_action_row1787[] = {
+ 1,
+ -1, 1, 65
+};
+static int parser_action_row1788[] = {
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
+};
+static int parser_action_row1789[] = {
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
+};
+static int parser_action_row1790[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1791[] = {
+ 2,
+ -1, 1, 76,
+ 15, 1, 79
+};
+static int parser_action_row1792[] = {
+ 4,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 95, 0, 3
+};
+static int parser_action_row1793[] = {
+ 2,
+ -1, 1, 61,
+ 9, 0, 1837
+};
+static int parser_action_row1794[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1795[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1796[] = {
+ 1,
+ -1, 1, 53
+};
+static int parser_action_row1797[] = {
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
+};
+static int parser_action_row1798[] = {
+ 1,
+ -1, 1, 72
+};
+static int parser_action_row1799[] = {
+ 2,
+ -1, 1, 469,
+ 9, 0, 1320
+};
+static int parser_action_row1800[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 589,
+ 12, 0, 31,
+ 15, 0, 33,
+ 16, 0, 34,
+ 22, 0, 35,
+ 25, 0, 36,
+ 26, 0, 37,
+ 27, 0, 38,
+ 33, 0, 39,
+ 34, 0, 40,
+ 35, 0, 41,
+ 36, 0, 42,
+ 37, 0, 43,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 49,
+ 51, 0, 50,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 54,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1801[] = {
+ 3,
+ -1, 3, 1800,
+ 28, 0, 84,
+ 109, 0, 85
+};
+static int parser_action_row1802[] = {
+ 1,
+ -1, 1, 71
+};
+static int parser_action_row1803[] = {
+ 1,
+ -1, 1, 663
+};
+static int parser_action_row1804[] = {
+ 1,
+ -1, 1, 682
+};
+static int parser_action_row1805[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1806[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1807[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1808[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1809[] = {
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1810[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1811[] = {
+ 13,
+ -1, 1, 749,
+ 59, 0, 1850,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1812[] = {
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1813[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1814[] = {
+ 13,
+ -1, 1, 753,
+ 59, 0, 1854,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1815[] = {
+ 14,
+ -1, 1, 752,
+ 52, 0, 277,
+ 59, 0, 1856,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1816[] = {
+ 1,
+ -1, 1, 674
+};
+static int parser_action_row1817[] = {
+ 1,
+ -1, 1, 693
+};
+static int parser_action_row1818[] = {
+ 34,
+ -1, 1, 458,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1035,
+ 12, 0, 887,
+ 15, 0, 888,
+ 16, 0, 34,
+ 22, 0, 889,
+ 25, 0, 891,
+ 26, 0, 892,
+ 27, 0, 893,
+ 33, 0, 894,
+ 34, 0, 895,
+ 35, 0, 896,
+ 36, 0, 897,
+ 37, 0, 898,
+ 38, 0, 44,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 50, 0, 899,
+ 51, 0, 900,
+ 52, 0, 51,
+ 54, 0, 52,
+ 95, 0, 3,
+ 96, 0, 53,
+ 97, 0, 901,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1819[] = {
+ 2,
+ -1, 3, 1818,
+ 24, 0, 1861
+};
+static int parser_action_row1820[] = {
+ 1,
+ -1, 1, 599
+};
+static int parser_action_row1821[] = {
+ 1,
+ -1, 1, 603
+};
+static int parser_action_row1822[] = {
+ 2,
+ -1, 1, 602,
+ 52, 0, 277
+};
+static int parser_action_row1823[] = {
+ 1,
+ -1, 1, 607
+};
+static int parser_action_row1824[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1754[] = {
+static int parser_action_row1825[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1826[] = {
2,
- -1, 3, 1753,
- 53, 0, 1790
+ -1, 3, 1825,
+ 53, 0, 1865
};
-static int parser_action_row1755[] = {
- 4,
- -1, 3, 1754,
- 0, 0, 83,
- 1, 0, 84,
- 87, 0, 185
+static int parser_action_row1827[] = {
+ 1,
+ -1, 1, 137
};
-static int parser_action_row1756[] = {
- 2,
- -1, 3, 1755,
- 47, 0, 1793
+static int parser_action_row1828[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1757[] = {
- 2,
- -1, 3, 1756,
- 53, 0, 1794
+static int parser_action_row1829[] = {
+ 4,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2,
+ 96, 0, 603
};
-static int parser_action_row1758[] = {
- 2,
- -1, 3, 1757,
- 53, 0, 1795
+static int parser_action_row1830[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1759[] = {
+static int parser_action_row1831[] = {
1,
- -1, 1, 46
+ -1, 1, 48
};
-static int parser_action_row1760[] = {
+static int parser_action_row1832[] = {
2,
- -1, 1, 451,
- 9, 0, 1241
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1761[] = {
+static int parser_action_row1833[] = {
1,
- -1, 1, 56
+ -1, 1, 58
};
-static int parser_action_row1762[] = {
+static int parser_action_row1834[] = {
1,
- -1, 1, 65
+ -1, 1, 67
};
-static int parser_action_row1763[] = {
+static int parser_action_row1835[] = {
1,
- -1, 1, 64
+ -1, 1, 66
};
-static int parser_action_row1764[] = {
+static int parser_action_row1836[] = {
2,
- -1, 1, 451,
- 9, 0, 1241
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1765[] = {
- 2,
- -1, 1, 78,
- 9, 0, 1345
+static int parser_action_row1837[] = {
+ 6,
+ -1, 1, 485,
+ 0, 0, 1,
+ 1, 0, 2,
+ 9, 0, 1451,
+ 15, 1, 80,
+ 95, 0, 3
};
-static int parser_action_row1766[] = {
+static int parser_action_row1838[] = {
1,
- -1, 1, 61
+ -1, 1, 63
};
-static int parser_action_row1767[] = {
+static int parser_action_row1839[] = {
2,
- -1, 1, 76,
- 14, 0, 910
+ -1, 1, 78,
+ 14, 0, 969
};
-static int parser_action_row1768[] = {
+static int parser_action_row1840[] = {
2,
- -1, 1, 60,
- 9, 0, 1799
+ -1, 1, 62,
+ 9, 0, 1872
};
-static int parser_action_row1769[] = {
+static int parser_action_row1841[] = {
1,
- -1, 1, 53
+ -1, 1, 55
};
-static int parser_action_row1770[] = {
+static int parser_action_row1842[] = {
1,
- -1, 1, 52
+ -1, 1, 54
};
-static int parser_action_row1771[] = {
+static int parser_action_row1843[] = {
2,
- -1, 1, 451,
- 9, 0, 1241
+ -1, 1, 469,
+ 9, 0, 1320
};
-static int parser_action_row1772[] = {
+static int parser_action_row1844[] = {
1,
- -1, 1, 71
+ -1, 1, 73
};
-static int parser_action_row1773[] = {
+static int parser_action_row1845[] = {
1,
- -1, 1, 620
+ -1, 1, 662
};
-static int parser_action_row1774[] = {
+static int parser_action_row1846[] = {
1,
- -1, 1, 639
+ -1, 1, 681
};
-static int parser_action_row1775[] = {
+static int parser_action_row1847[] = {
1,
- -1, 1, 618
+ -1, 1, 660
};
-static int parser_action_row1776[] = {
+static int parser_action_row1848[] = {
1,
- -1, 1, 637
+ -1, 1, 679
};
-static int parser_action_row1777[] = {
+static int parser_action_row1849[] = {
1,
- -1, 1, 623
+ -1, 1, 665
};
-static int parser_action_row1778[] = {
+static int parser_action_row1850[] = {
1,
- -1, 1, 642
-};
-static int parser_action_row1779[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row1780[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+ -1, 1, 684
};
-static int parser_action_row1781[] = {
+static int parser_action_row1851[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1852[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1853[] = {
+ 1,
+ -1, 1, 669
+};
+static int parser_action_row1854[] = {
1,
- -1, 1, 627
+ -1, 1, 688
};
-static int parser_action_row1782[] = {
+static int parser_action_row1855[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1856[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1857[] = {
+ 26,
+ -1, 1, 518,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 41, 1, 458,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 98, 1, 458,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1858[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1859[] = {
+ 13,
+ -1, 1, 751,
+ 59, 0, 1880,
+ 60, 0, 217,
+ 61, 0, 218,
+ 62, 0, 219,
+ 63, 0, 220,
+ 64, 0, 221,
+ 65, 0, 222,
+ 66, 0, 223,
+ 67, 0, 224,
+ 68, 0, 225,
+ 69, 0, 226,
+ 70, 0, 227
+};
+static int parser_action_row1860[] = {
1,
- -1, 1, 646
-};
-static int parser_action_row1783[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row1784[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row1785[] = {
- 25,
- -1, 1, 486,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 41, 1, 440,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 90, 1, 440,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row1786[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
-};
-static int parser_action_row1787[] = {
- 10,
- -1, 1, 701,
- 59, 0, 1807,
- 60, 0, 198,
- 61, 0, 199,
- 62, 0, 200,
- 63, 0, 201,
- 64, 0, 202,
- 65, 0, 203,
- 66, 0, 204,
- 67, 0, 205
+ -1, 1, 940
};
-static int parser_action_row1788[] = {
+static int parser_action_row1861[] = {
2,
- -1, 1, 260,
- 24, 1, 877
-};
-static int parser_action_row1789[] = {
- 22,
- -1, 1, 440,
- 12, 0, 1034,
- 22, 0, 1035,
- 31, 0, 1036,
- 38, 0, 1037,
- 40, 0, 1038,
- 42, 0, 1039,
- 43, 0, 1040,
- 44, 0, 1041,
- 45, 0, 1042,
- 48, 0, 1043,
- 52, 0, 46,
- 71, 0, 1044,
- 72, 0, 1045,
- 88, 0, 48,
- 89, 0, 1046,
- 91, 0, 1047,
- 92, 0, 1048,
- 93, 0, 1049,
- 94, 0, 1050,
- 95, 0, 54,
- 98, 0, 1051
+ -1, 3, 1860,
+ 49, 0, 197
};
-static int parser_action_row1790[] = {
+static int parser_action_row1862[] = {
3,
- -1, 1, 458,
+ -1, 1, 487,
0, 0, 1,
1, 0, 2
};
-static int parser_action_row1791[] = {
+static int parser_action_row1863[] = {
1,
- -1, 1, 565
+ -1, 1, 601
};
-static int parser_action_row1792[] = {
- 3,
- -1, 3, 1791,
- 0, 0, 83,
- 1, 0, 84
+static int parser_action_row1864[] = {
+ 2,
+ -1, 3, 1863,
+ 45, 0, 1884
};
-static int parser_action_row1793[] = {
- 1,
- -1, 1, 398
+static int parser_action_row1865[] = {
+ 2,
+ -1, 3, 1864,
+ 53, 0, 1885
};
-static int parser_action_row1794[] = {
- 3,
- -1, 1, 458,
- 0, 0, 1,
- 1, 0, 2
+static int parser_action_row1866[] = {
+ 5,
+ -1, 3, 1865,
+ 0, 0, 88,
+ 1, 0, 89,
+ 94, 0, 204,
+ 95, 0, 90
};
-static int parser_action_row1795[] = {
+static int parser_action_row1867[] = {
+ 2,
+ -1, 3, 1866,
+ 47, 0, 1888
+};
+static int parser_action_row1868[] = {
+ 2,
+ -1, 3, 1867,
+ 53, 0, 1889
+};
+static int parser_action_row1869[] = {
+ 2,
+ -1, 3, 1868,
+ 53, 0, 1890
+};
+static int parser_action_row1870[] = {
1,
- -1, 1, 128
+ -1, 1, 49
};
-static int parser_action_row1796[] = {
+static int parser_action_row1871[] = {
1,
- -1, 1, 126
+ -1, 1, 68
};
-static int parser_action_row1797[] = {
+static int parser_action_row1872[] = {
1,
- -1, 1, 47
+ -1, 1, 60
};
-static int parser_action_row1798[] = {
+static int parser_action_row1873[] = {
1,
- -1, 1, 66
+ -1, 1, 64
};
-static int parser_action_row1799[] = {
+static int parser_action_row1874[] = {
1,
- -1, 1, 58
+ -1, 1, 56
};
-static int parser_action_row1800[] = {
+static int parser_action_row1875[] = {
1,
- -1, 1, 62
+ -1, 1, 664
};
-static int parser_action_row1801[] = {
+static int parser_action_row1876[] = {
1,
- -1, 1, 54
+ -1, 1, 683
};
-static int parser_action_row1802[] = {
+static int parser_action_row1877[] = {
1,
- -1, 1, 622
+ -1, 1, 668
};
-static int parser_action_row1803[] = {
+static int parser_action_row1878[] = {
1,
- -1, 1, 641
+ -1, 1, 687
};
-static int parser_action_row1804[] = {
+static int parser_action_row1879[] = {
1,
- -1, 1, 626
+ -1, 1, 667
};
-static int parser_action_row1805[] = {
+static int parser_action_row1880[] = {
1,
- -1, 1, 645
+ -1, 1, 686
};
-static int parser_action_row1806[] = {
+static int parser_action_row1881[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1882[] = {
+ 24,
+ -1, 1, 458,
+ 12, 0, 170,
+ 22, 0, 171,
+ 31, 0, 172,
+ 38, 0, 173,
+ 40, 0, 174,
+ 42, 0, 45,
+ 43, 0, 46,
+ 44, 0, 47,
+ 45, 0, 48,
+ 48, 0, 175,
+ 52, 0, 51,
+ 54, 0, 52,
+ 74, 0, 176,
+ 75, 0, 177,
+ 83, 0, 178,
+ 96, 0, 53,
+ 97, 0, 179,
+ 99, 0, 55,
+ 100, 0, 56,
+ 101, 0, 57,
+ 102, 0, 58,
+ 103, 0, 59,
+ 106, 0, 60
+};
+static int parser_action_row1883[] = {
+ 2,
+ -1, 1, 271,
+ 24, 1, 939
+};
+static int parser_action_row1884[] = {
+ 23,
+ -1, 1, 458,
+ 12, 0, 1102,
+ 22, 0, 1103,
+ 31, 0, 1104,
+ 38, 0, 1105,
+ 40, 0, 1106,
+ 42, 0, 1107,
+ 43, 0, 1108,
+ 44, 0, 1109,
+ 45, 0, 1110,
+ 48, 0, 1111,
+ 52, 0, 51,
+ 74, 0, 1112,
+ 75, 0, 1113,
+ 83, 0, 1114,
+ 96, 0, 53,
+ 97, 0, 1115,
+ 99, 0, 1116,
+ 100, 0, 1117,
+ 101, 0, 1118,
+ 102, 0, 1119,
+ 103, 0, 59,
+ 106, 0, 1120
+};
+static int parser_action_row1885[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
+};
+static int parser_action_row1886[] = {
1,
- -1, 1, 625
+ -1, 1, 605
};
-static int parser_action_row1807[] = {
+static int parser_action_row1887[] = {
+ 4,
+ -1, 3, 1886,
+ 0, 0, 88,
+ 1, 0, 89,
+ 95, 0, 90
+};
+static int parser_action_row1888[] = {
1,
- -1, 1, 644
+ -1, 1, 417
};
-static int parser_action_row1808[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+static int parser_action_row1889[] = {
+ 3,
+ -1, 1, 487,
+ 0, 0, 1,
+ 1, 0, 2
};
-static int parser_action_row1809[] = {
- 23,
- -1, 1, 440,
- 12, 0, 156,
- 22, 0, 157,
- 31, 0, 158,
- 38, 0, 159,
- 40, 0, 160,
- 42, 0, 40,
- 43, 0, 41,
- 44, 0, 42,
- 45, 0, 43,
- 48, 0, 161,
- 52, 0, 46,
- 54, 0, 47,
- 71, 0, 162,
- 72, 0, 163,
- 88, 0, 48,
- 89, 0, 164,
- 91, 0, 50,
- 92, 0, 51,
- 93, 0, 52,
- 94, 0, 53,
- 95, 0, 54,
- 98, 0, 55
+static int parser_action_row1890[] = {
+ 1,
+ -1, 1, 134
};
-static int parser_action_row1810[] = {
+static int parser_action_row1891[] = {
1,
- -1, 1, 495
+ -1, 1, 132
};
-static int parser_action_row1811[] = {
- 2,
- -1, 3, 1810,
- 53, 0, 1815
+static int parser_action_row1892[] = {
+ 1,
+ -1, 1, 666
};
-static int parser_action_row1812[] = {
+static int parser_action_row1893[] = {
+ 1,
+ -1, 1, 685
+};
+static int parser_action_row1894[] = {
1,
- -1, 1, 399
+ -1, 1, 527
};
-static int parser_action_row1813[] = {
+static int parser_action_row1895[] = {
2,
- -1, 3, 1812,
- 53, 0, 1816
+ -1, 3, 1894,
+ 53, 0, 1897
};
-static int parser_action_row1814[] = {
+static int parser_action_row1896[] = {
1,
- -1, 1, 624
+ -1, 1, 418
};
-static int parser_action_row1815[] = {
- 1,
- -1, 1, 643
+static int parser_action_row1897[] = {
+ 2,
+ -1, 3, 1896,
+ 53, 0, 1898
};
-static int parser_action_row1816[] = {
+static int parser_action_row1898[] = {
1,
- -1, 1, 566
+ -1, 1, 606
};
-static int parser_action_row1817[] = {
+static int parser_action_row1899[] = {
1,
- -1, 1, 130
+ -1, 1, 136
};
const int* const parser_action_table[] = {
parser_action_row1814,
parser_action_row1815,
parser_action_row1816,
- parser_action_row1817
+ parser_action_row1817,
+ parser_action_row1818,
+ parser_action_row1819,
+ parser_action_row1820,
+ parser_action_row1821,
+ parser_action_row1822,
+ parser_action_row1823,
+ parser_action_row1824,
+ parser_action_row1825,
+ parser_action_row1826,
+ parser_action_row1827,
+ parser_action_row1828,
+ parser_action_row1829,
+ parser_action_row1830,
+ parser_action_row1831,
+ parser_action_row1832,
+ parser_action_row1833,
+ parser_action_row1834,
+ parser_action_row1835,
+ parser_action_row1836,
+ parser_action_row1837,
+ parser_action_row1838,
+ parser_action_row1839,
+ parser_action_row1840,
+ parser_action_row1841,
+ parser_action_row1842,
+ parser_action_row1843,
+ parser_action_row1844,
+ parser_action_row1845,
+ parser_action_row1846,
+ parser_action_row1847,
+ parser_action_row1848,
+ parser_action_row1849,
+ parser_action_row1850,
+ parser_action_row1851,
+ parser_action_row1852,
+ parser_action_row1853,
+ parser_action_row1854,
+ parser_action_row1855,
+ parser_action_row1856,
+ parser_action_row1857,
+ parser_action_row1858,
+ parser_action_row1859,
+ parser_action_row1860,
+ parser_action_row1861,
+ parser_action_row1862,
+ parser_action_row1863,
+ parser_action_row1864,
+ parser_action_row1865,
+ parser_action_row1866,
+ parser_action_row1867,
+ parser_action_row1868,
+ parser_action_row1869,
+ parser_action_row1870,
+ parser_action_row1871,
+ parser_action_row1872,
+ parser_action_row1873,
+ parser_action_row1874,
+ parser_action_row1875,
+ parser_action_row1876,
+ parser_action_row1877,
+ parser_action_row1878,
+ parser_action_row1879,
+ parser_action_row1880,
+ parser_action_row1881,
+ parser_action_row1882,
+ parser_action_row1883,
+ parser_action_row1884,
+ parser_action_row1885,
+ parser_action_row1886,
+ parser_action_row1887,
+ parser_action_row1888,
+ parser_action_row1889,
+ parser_action_row1890,
+ parser_action_row1891,
+ parser_action_row1892,
+ parser_action_row1893,
+ parser_action_row1894,
+ parser_action_row1895,
+ parser_action_row1896,
+ parser_action_row1897,
+ parser_action_row1898,
+ parser_action_row1899
};
static int parser_goto_row1[] = {
1,
- -1, 3
+ -1, 4
};
static int parser_goto_row2[] = {
1,
- -1, 4
+ -1, 5
};
static int parser_goto_row3[] = {
3,
- -1, 5,
- 15, 86,
- 22, 86
+ -1, 6,
+ 18, 92,
+ 28, 92
};
static int parser_goto_row4[] = {
9,
- -1, 6,
- 17, 94,
- 24, 94,
- 89, 94,
- 93, 94,
- 103, 94,
- 105, 94,
- 244, 94,
- 250, 94
+ -1, 7,
+ 20, 100,
+ 30, 100,
+ 95, 100,
+ 99, 100,
+ 112, 100,
+ 114, 100,
+ 265, 100,
+ 274, 100
};
static int parser_goto_row5[] = {
16,
- -1, 7,
- 4, 20,
- 15, 87,
- 16, 90,
- 17, 95,
- 22, 101,
- 23, 104,
- 24, 106,
- 88, 243,
- 89, 245,
- 93, 247,
- 102, 249,
- 103, 251,
- 105, 252,
- 244, 464,
- 250, 466
+ -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, 500,
+ 274, 503
};
static int parser_goto_row6[] = {
1,
- -1, 8
+ -1, 9
};
static int parser_goto_row7[] = {
1,
- -1, 9
+ -1, 10
};
static int parser_goto_row8[] = {
- 10,
- -1, 731,
- 12, 57,
- 21, 100,
- 92, 246,
- 96, 246,
- 185, 360,
- 550, 728,
- 1094, 1252,
- 1224, 1346,
- 1256, 1252
+ 9,
+ -1, 789,
+ 13, 61,
+ 27, 109,
+ 98, 267,
+ 204, 391,
+ 594, 786,
+ 993, 1165,
+ 1169, 1165,
+ 1303, 1450
};
static int parser_goto_row9[] = {
1,
- -1, 434
+ -1, 469
};
static int parser_goto_row10[] = {
1,
- -1, 927
+ -1, 1325
};
static int parser_goto_row11[] = {
2,
- -1, 1364,
- 1366, 1480
+ -1, 1470,
+ 1471, 1581
};
static int parser_goto_row12[] = {
2,
- -1, 1246,
- 1478, 1543
+ -1, 1326,
+ 1580, 1651
};
static int parser_goto_row13[] = {
2,
- -1, 1088,
- 1095, 1254
+ -1, 986,
+ 994, 1167
};
static int parser_goto_row14[] = {
- 2,
- -1, 1089,
- 1092, 1249
+ 4,
+ -1, 987,
+ 990, 1162,
+ 1468, 1578,
+ 1579, 1650
};
static int parser_goto_row15[] = {
2,
- -1, 1090,
- 1095, 1255
+ -1, 988,
+ 994, 1168
};
static int parser_goto_row16[] = {
1,
- -1, 1091
+ -1, 989
};
static int parser_goto_row17[] = {
6,
- -1, 911,
- 767, 914,
- 1603, 1661,
- 1608, 1671,
- 1614, 1681,
- 1766, 1798
+ -1, 970,
+ 825, 973,
+ 1653, 1725,
+ 1658, 1735,
+ 1664, 1745,
+ 1838, 1871
};
static int parser_goto_row18[] = {
7,
- -1, 921,
- 1547, 1606,
- 1550, 1610,
- 1602, 1658,
- 1607, 1667,
- 1608, 1672,
- 1613, 1678
+ -1, 980,
+ 1584, 1656,
+ 1587, 1660,
+ 1652, 1722,
+ 1657, 1731,
+ 1658, 1736,
+ 1663, 1742
};
static int parser_goto_row19[] = {
8,
- -1, 218,
- 100, 248,
- 246, 465,
- 360, 555,
- 728, 877,
- 731, 881,
- 1252, 1368,
- 1346, 1469
+ -1, 240,
+ 109, 272,
+ 267, 501,
+ 391, 599,
+ 786, 936,
+ 789, 940,
+ 1165, 1328,
+ 1450, 1568
};
static int parser_goto_row20[] = {
4,
- -1, 612,
- 614, 776,
- 615, 777,
- 778, 925
+ -1, 661,
+ 663, 834,
+ 664, 835,
+ 836, 984
};
static int parser_goto_row21[] = {
6,
- -1, 772,
- 1484, 1547,
- 1486, 1550,
- 1545, 1602,
- 1548, 1607,
- 1551, 1613
+ -1, 830,
+ 1474, 1584,
+ 1476, 1587,
+ 1582, 1652,
+ 1585, 1657,
+ 1588, 1663
};
static int parser_goto_row22[] = {
1,
- -1, 1077
+ -1, 1149
};
static int parser_goto_row23[] = {
2,
- -1, 1231,
- 1233, 1353
+ -1, 1310,
+ 1312, 1458
};
static int parser_goto_row24[] = {
2,
- -1, 1078,
- 1352, 1472
+ -1, 1150,
+ 1457, 1571
};
static int parser_goto_row25[] = {
8,
- -1, 922,
- 921, 1085,
- 1550, 1611,
- 1602, 1659,
- 1610, 1675,
- 1613, 1679,
- 1658, 1714,
- 1678, 1731
+ -1, 981,
+ 980, 1157,
+ 1587, 1661,
+ 1652, 1723,
+ 1660, 1739,
+ 1663, 1743,
+ 1722, 1783,
+ 1742, 1800
};
static int parser_goto_row26[] = {
2,
- -1, 1356,
- 1357, 1474
+ -1, 1461,
+ 1462, 1573
};
static int parser_goto_row27[] = {
2,
- -1, 1235,
- 1473, 1541
+ -1, 1314,
+ 1572, 1646
};
static int parser_goto_row28[] = {
1,
- -1, 1236
+ -1, 1315
};
static int parser_goto_row29[] = {
1,
- -1, 1237
+ -1, 1316
};
static int parser_goto_row30[] = {
1,
};
static int parser_goto_row31[] = {
1,
- -1, 58
+ -1, 86
};
static int parser_goto_row32[] = {
- 10,
- -1, 59,
- 922, 1086,
- 927, 1092,
- 1085, 1244,
- 1611, 1676,
- 1659, 1715,
- 1675, 1728,
- 1679, 1732,
- 1714, 1760,
- 1731, 1771
+ 11,
+ -1, 87,
+ 839, 990,
+ 981, 1158,
+ 1157, 1323,
+ 1468, 1579,
+ 1661, 1740,
+ 1723, 1784,
+ 1739, 1797,
+ 1743, 1801,
+ 1783, 1832,
+ 1800, 1843
};
static int parser_goto_row33[] = {
1,
};
static int parser_goto_row34[] = {
5,
- -1, 10,
- 16, 91,
- 23, 91,
- 88, 91,
- 102, 91
+ -1, 11,
+ 19, 97,
+ 29, 97,
+ 94, 97,
+ 111, 97
};
static int parser_goto_row35[] = {
24,
- -1, 391,
- 192, 367,
- 486, 661,
- 505, 684,
- 526, 701,
- 566, 745,
- 726, 874,
- 743, 874,
- 873, 874,
- 892, 874,
- 917, 1079,
- 985, 1135,
- 1080, 1238,
- 1098, 1259,
- 1123, 1275,
- 1151, 1294,
- 1253, 1378,
- 1473, 1238,
- 1491, 1553,
- 1540, 1378,
- 1542, 1601,
- 1552, 1614,
- 1650, 1706,
- 1656, 1711
+ -1, 426,
+ 211, 398,
+ 523, 711,
+ 547, 739,
+ 565, 754,
+ 610, 803,
+ 784, 933,
+ 801, 933,
+ 932, 933,
+ 951, 933,
+ 976, 1151,
+ 1052, 1210,
+ 1152, 1317,
+ 1166, 1339,
+ 1173, 1360,
+ 1198, 1376,
+ 1228, 1396,
+ 1481, 1590,
+ 1572, 1317,
+ 1589, 1664,
+ 1645, 1339,
+ 1647, 1719,
+ 1774, 1824,
+ 1780, 1829
};
static int parser_goto_row36[] = {
4,
- -1, 875,
- 743, 893,
- 873, 1006,
- 892, 1025
+ -1, 934,
+ 801, 952,
+ 932, 1074,
+ 951, 1093
};
static int parser_goto_row37[] = {
2,
- -1, 1008,
- 1009, 1152
+ -1, 1076,
+ 1077, 1229
};
static int parser_goto_row38[] = {
5,
- -1, 773,
- 1076, 1226,
- 1227, 1349,
- 1229, 1350,
- 1546, 1603
+ -1, 831,
+ 1148, 1305,
+ 1306, 1454,
+ 1308, 1455,
+ 1583, 1653
};
static int parser_goto_row39[] = {
8,
- -1, 307,
- 308, 507,
- 362, 556,
- 414, 586,
- 557, 739,
- 1245, 1361,
- 1362, 1477,
- 1549, 1608
+ -1, 334,
+ 335, 549,
+ 393, 600,
+ 449, 631,
+ 601, 797,
+ 1324, 1466,
+ 1467, 1577,
+ 1586, 1658
};
static int parser_goto_row40[] = {
- 30,
- -1, 144,
- 31, 152,
- 355, 546,
- 544, 721,
- 688, 860,
- 740, 890,
- 831, 974,
- 833, 152,
- 920, 1083,
- 994, 1142,
- 1084, 1243,
- 1133, 546,
- 1279, 721,
- 1291, 1420,
- 1406, 860,
- 1411, 890,
- 1574, 1142,
- 1605, 1664,
- 1609, 1673,
- 1657, 1712,
- 1665, 1718,
- 1666, 1719,
- 1669, 1723,
- 1674, 1727,
- 1677, 1729,
- 1699, 1420,
- 1713, 1759,
- 1720, 1763,
- 1725, 1767,
- 1730, 1770
+ 32,
+ -1, 158,
+ 37, 167,
+ 386, 590,
+ 588, 779,
+ 743, 919,
+ 798, 949,
+ 890, 1041,
+ 892, 167,
+ 979, 1155,
+ 1058, 1215,
+ 1062, 1219,
+ 1156, 1322,
+ 1208, 590,
+ 1216, 1390,
+ 1380, 779,
+ 1393, 1516,
+ 1502, 919,
+ 1507, 949,
+ 1655, 1728,
+ 1659, 1737,
+ 1692, 1219,
+ 1721, 1781,
+ 1729, 1787,
+ 1730, 1788,
+ 1733, 1792,
+ 1738, 1796,
+ 1741, 1798,
+ 1782, 1831,
+ 1789, 1835,
+ 1794, 1839,
+ 1799, 1842,
+ 1817, 1516
};
static int parser_goto_row41[] = {
1,
- -1, 60
+ -1, 62
};
static int parser_goto_row42[] = {
2,
- -1, 61,
- 850, 991
+ -1, 63,
+ 909, 1059
};
static int parser_goto_row43[] = {
4,
- -1, 303,
- 547, 723,
- 969, 1126,
- 1281, 1410
+ -1, 330,
+ 591, 781,
+ 1036, 1201,
+ 1382, 1506
};
static int parser_goto_row44[] = {
4,
- -1, 220,
- 222, 436,
- 504, 436,
- 1141, 436
+ -1, 241,
+ 243, 471,
+ 546, 471,
+ 1218, 471
};
static int parser_goto_row45[] = {
- 16,
- -1, 145,
- 12, 62,
- 21, 62,
- 92, 62,
- 96, 62,
- 146, 304,
- 221, 435,
- 437, 435,
- 503, 435,
- 547, 304,
- 683, 435,
- 687, 843,
- 850, 992,
- 969, 304,
- 1281, 304,
- 1405, 843
+ 15,
+ -1, 159,
+ 13, 64,
+ 27, 64,
+ 98, 64,
+ 160, 331,
+ 242, 470,
+ 472, 470,
+ 545, 470,
+ 591, 331,
+ 738, 470,
+ 742, 902,
+ 909, 1060,
+ 1036, 331,
+ 1382, 331,
+ 1501, 902
};
static int parser_goto_row46[] = {
18,
- -1, 179,
- 36, 180,
- 147, 305,
- 153, 311,
- 369, 564,
- 370, 565,
- 836, 980,
- 837, 981,
- 861, 998,
- 891, 1024,
- 972, 1127,
- 977, 1130,
- 1370, 1489,
- 1371, 1490,
- 1421, 1520,
- 1510, 1575,
- 1513, 1577,
- 1749, 1787
+ -1, 198,
+ 41, 199,
+ 161, 332,
+ 168, 339,
+ 400, 608,
+ 401, 609,
+ 895, 1047,
+ 896, 1048,
+ 920, 1066,
+ 950, 1092,
+ 1039, 1202,
+ 1044, 1205,
+ 1330, 1479,
+ 1331, 1480,
+ 1517, 1625,
+ 1615, 1693,
+ 1618, 1695,
+ 1860, 1882
};
static int parser_goto_row47[] = {
20,
- -1, 63,
- 193, 392,
- 687, 844,
- 749, 392,
- 829, 844,
- 833, 844,
- 1021, 392,
- 1133, 844,
- 1253, 1379,
- 1279, 844,
- 1298, 392,
- 1405, 844,
- 1406, 844,
- 1411, 844,
- 1426, 392,
- 1492, 392,
- 1540, 1379,
- 1574, 844,
- 1652, 392,
- 1699, 844
+ -1, 65,
+ 212, 427,
+ 742, 903,
+ 807, 427,
+ 888, 903,
+ 892, 903,
+ 1089, 427,
+ 1166, 1340,
+ 1208, 903,
+ 1380, 903,
+ 1400, 427,
+ 1482, 427,
+ 1501, 903,
+ 1502, 903,
+ 1507, 903,
+ 1522, 427,
+ 1645, 1340,
+ 1692, 903,
+ 1776, 427,
+ 1817, 903
};
static int parser_goto_row48[] = {
18,
- -1, 64,
- 193, 393,
- 687, 845,
- 749, 393,
- 829, 845,
- 833, 845,
- 1021, 393,
- 1133, 845,
- 1279, 845,
- 1298, 393,
- 1405, 845,
- 1406, 845,
- 1411, 845,
- 1426, 393,
- 1492, 393,
- 1574, 845,
- 1652, 393,
- 1699, 845
+ -1, 66,
+ 212, 428,
+ 742, 904,
+ 807, 428,
+ 888, 904,
+ 892, 904,
+ 1089, 428,
+ 1208, 904,
+ 1380, 904,
+ 1400, 428,
+ 1482, 428,
+ 1501, 904,
+ 1502, 904,
+ 1507, 904,
+ 1522, 428,
+ 1692, 904,
+ 1776, 428,
+ 1817, 904
};
static int parser_goto_row49[] = {
52,
- -1, 206,
- 207, 421,
- 226, 441,
- 235, 450,
- 237, 454,
- 239, 459,
- 455, 636,
- 460, 640,
- 463, 643,
- 578, 454,
- 580, 459,
- 621, 789,
- 644, 808,
- 754, 643,
- 790, 936,
- 792, 938,
- 794, 941,
- 796, 946,
- 895, 789,
- 942, 1106,
- 947, 1110,
- 950, 1113,
- 990, 454,
- 996, 459,
- 1029, 941,
- 1030, 946,
- 1114, 1267,
- 1146, 643,
- 1171, 1113,
- 1286, 789,
- 1377, 1494,
- 1416, 941,
- 1418, 946,
- 1495, 1558,
- 1496, 1560,
- 1497, 1562,
- 1499, 1566,
- 1501, 1568,
- 1519, 1113,
- 1563, 1624,
- 1569, 1635,
- 1570, 1637,
- 1625, 1687,
- 1638, 1698,
- 1688, 1736,
- 1689, 1738,
- 1690, 1740,
- 1691, 1743,
- 1741, 1779,
- 1744, 1783,
- 1745, 1785,
- 1786, 1808
+ -1, 228,
+ 229, 456,
+ 246, 476,
+ 255, 485,
+ 257, 489,
+ 259, 494,
+ 490, 685,
+ 495, 689,
+ 498, 692,
+ 623, 489,
+ 625, 494,
+ 670, 847,
+ 693, 866,
+ 812, 692,
+ 848, 1003,
+ 850, 1005,
+ 852, 1008,
+ 854, 1013,
+ 954, 847,
+ 1009, 1181,
+ 1014, 1185,
+ 1017, 1188,
+ 1057, 489,
+ 1064, 494,
+ 1097, 1008,
+ 1098, 1013,
+ 1189, 1368,
+ 1223, 692,
+ 1248, 1188,
+ 1338, 1484,
+ 1387, 847,
+ 1485, 1595,
+ 1486, 1597,
+ 1487, 1599,
+ 1489, 1603,
+ 1491, 1605,
+ 1512, 1008,
+ 1514, 1013,
+ 1600, 1674,
+ 1606, 1685,
+ 1607, 1687,
+ 1624, 1188,
+ 1675, 1751,
+ 1688, 1762,
+ 1752, 1805,
+ 1753, 1807,
+ 1754, 1809,
+ 1755, 1812,
+ 1810, 1851,
+ 1813, 1855,
+ 1814, 1857,
+ 1858, 1881
};
static int parser_goto_row50[] = {
10,
- -1, 65,
- 193, 394,
- 749, 394,
- 1021, 394,
- 1253, 1380,
- 1298, 394,
- 1426, 394,
- 1492, 394,
- 1540, 1380,
- 1652, 394
+ -1, 67,
+ 212, 429,
+ 807, 429,
+ 1089, 429,
+ 1166, 1341,
+ 1400, 429,
+ 1482, 429,
+ 1522, 429,
+ 1645, 1341,
+ 1776, 429
};
static int parser_goto_row51[] = {
1,
- -1, 66
+ -1, 68
};
static int parser_goto_row52[] = {
3,
- -1, 846,
- 850, 993,
- 991, 1140
+ -1, 905,
+ 909, 1061,
+ 1059, 1217
};
static int parser_goto_row53[] = {
10,
- -1, 67,
- 193, 395,
- 749, 395,
- 1021, 395,
- 1253, 1381,
- 1298, 395,
- 1426, 395,
- 1492, 395,
- 1540, 1381,
- 1652, 395
+ -1, 69,
+ 212, 430,
+ 807, 430,
+ 1089, 430,
+ 1166, 1342,
+ 1400, 430,
+ 1482, 430,
+ 1522, 430,
+ 1645, 1342,
+ 1776, 430
};
static int parser_goto_row54[] = {
10,
- -1, 68,
- 193, 396,
- 749, 396,
- 1021, 396,
- 1253, 1382,
- 1298, 396,
- 1426, 396,
- 1492, 396,
- 1540, 1382,
- 1652, 396
+ -1, 70,
+ 212, 431,
+ 807, 431,
+ 1089, 431,
+ 1166, 1343,
+ 1400, 431,
+ 1482, 431,
+ 1522, 431,
+ 1645, 1343,
+ 1776, 431
};
static int parser_goto_row55[] = {
10,
- -1, 69,
- 193, 397,
- 749, 397,
- 1021, 397,
- 1253, 1383,
- 1298, 397,
- 1426, 397,
- 1492, 397,
- 1540, 1383,
- 1652, 397
+ -1, 71,
+ 212, 432,
+ 807, 432,
+ 1089, 432,
+ 1166, 1344,
+ 1400, 432,
+ 1482, 432,
+ 1522, 432,
+ 1645, 1344,
+ 1776, 432
};
static int parser_goto_row56[] = {
10,
- -1, 70,
- 193, 398,
- 749, 398,
- 1021, 398,
- 1253, 1384,
- 1298, 398,
- 1426, 398,
- 1492, 398,
- 1540, 1384,
- 1652, 398
+ -1, 72,
+ 212, 433,
+ 807, 433,
+ 1089, 433,
+ 1166, 1345,
+ 1400, 433,
+ 1482, 433,
+ 1522, 433,
+ 1645, 1345,
+ 1776, 433
};
static int parser_goto_row57[] = {
2,
- -1, 363,
- 984, 1134
+ -1, 394,
+ 1051, 1209
};
static int parser_goto_row58[] = {
10,
- -1, 71,
- 193, 399,
- 749, 399,
- 1021, 399,
- 1253, 1385,
- 1298, 399,
- 1426, 399,
- 1492, 399,
- 1540, 1385,
- 1652, 399
+ -1, 73,
+ 212, 434,
+ 807, 434,
+ 1089, 434,
+ 1166, 1346,
+ 1400, 434,
+ 1482, 434,
+ 1522, 434,
+ 1645, 1346,
+ 1776, 434
};
static int parser_goto_row59[] = {
2,
- -1, 182,
- 839, 982
+ -1, 201,
+ 898, 1049
};
static int parser_goto_row60[] = {
- 130,
- -1, 400,
- 34, 165,
- 38, 183,
- 150, 309,
- 151, 310,
- 182, 354,
- 191, 364,
- 194, 413,
- 197, 418,
- 206, 419,
- 233, 446,
- 255, 468,
- 266, 476,
- 317, 514,
- 368, 563,
- 420, 590,
- 421, 591,
- 438, 476,
- 440, 625,
- 441, 626,
- 442, 627,
- 449, 630,
- 450, 631,
- 453, 633,
- 454, 634,
- 458, 637,
- 459, 638,
- 467, 476,
- 562, 744,
- 568, 418,
- 583, 756,
- 632, 476,
- 635, 801,
- 636, 802,
- 639, 803,
- 640, 804,
- 642, 805,
- 643, 806,
- 685, 825,
- 752, 633,
- 753, 637,
- 760, 907,
- 788, 933,
- 789, 934,
- 807, 952,
- 808, 953,
- 826, 966,
- 835, 979,
- 839, 983,
- 863, 1000,
- 888, 1022,
- 894, 1027,
- 902, 805,
- 935, 1099,
- 936, 1100,
- 937, 1101,
- 938, 1102,
- 940, 1103,
- 941, 1104,
- 945, 1107,
- 946, 1108,
- 954, 1116,
- 959, 1121,
- 973, 1128,
- 975, 1129,
- 982, 1132,
- 984, 364,
- 1001, 1148,
- 1023, 1166,
- 1028, 933,
- 1105, 1260,
- 1106, 1261,
- 1109, 1262,
- 1110, 1263,
- 1112, 1264,
- 1113, 1265,
- 1169, 1103,
- 1170, 1107,
- 1172, 1306,
- 1173, 1308,
- 1175, 1309,
- 1266, 1399,
- 1267, 1400,
- 1284, 1412,
- 1305, 1264,
- 1369, 1488,
- 1493, 1555,
- 1494, 1556,
- 1511, 1576,
- 1521, 1580,
- 1525, 907,
- 1557, 1617,
- 1558, 1618,
- 1559, 1619,
- 1560, 1620,
- 1561, 1621,
- 1562, 1622,
- 1565, 1630,
- 1566, 1631,
- 1567, 1632,
- 1568, 1633,
- 1583, 1644,
- 1615, 1682,
- 1623, 1684,
- 1624, 1685,
- 1634, 1693,
- 1635, 1694,
- 1636, 1695,
- 1637, 1696,
- 1686, 1733,
- 1687, 1734,
- 1697, 1746,
- 1698, 1747,
- 1724, 1766,
- 1735, 1772,
- 1736, 1773,
- 1737, 1774,
- 1738, 1775,
- 1739, 1776,
- 1740, 1777,
- 1742, 1780,
- 1743, 1781,
- 1778, 1801,
- 1779, 1802,
- 1782, 1803,
- 1783, 1804,
- 1784, 1805,
- 1785, 1806,
- 1807, 1813,
- 1808, 1814
+ 131,
+ -1, 435,
+ 39, 180,
+ 43, 202,
+ 163, 336,
+ 166, 338,
+ 201, 385,
+ 210, 395,
+ 213, 448,
+ 216, 453,
+ 228, 454,
+ 253, 481,
+ 279, 505,
+ 290, 514,
+ 344, 555,
+ 399, 607,
+ 455, 635,
+ 456, 636,
+ 473, 514,
+ 475, 674,
+ 476, 675,
+ 477, 676,
+ 484, 679,
+ 485, 680,
+ 488, 682,
+ 489, 683,
+ 493, 686,
+ 494, 687,
+ 504, 514,
+ 606, 802,
+ 612, 453,
+ 628, 814,
+ 681, 514,
+ 684, 859,
+ 685, 860,
+ 688, 861,
+ 689, 862,
+ 691, 863,
+ 692, 864,
+ 703, 871,
+ 740, 884,
+ 810, 682,
+ 811, 686,
+ 818, 966,
+ 846, 1000,
+ 847, 1001,
+ 865, 1019,
+ 866, 1020,
+ 885, 1033,
+ 894, 1046,
+ 898, 1050,
+ 922, 1068,
+ 947, 1090,
+ 953, 1095,
+ 961, 863,
+ 1002, 1174,
+ 1003, 1175,
+ 1004, 1176,
+ 1005, 1177,
+ 1007, 1178,
+ 1008, 1179,
+ 1012, 1182,
+ 1013, 1183,
+ 1021, 1191,
+ 1026, 514,
+ 1040, 1203,
+ 1042, 1204,
+ 1049, 1207,
+ 1051, 395,
+ 1069, 1225,
+ 1091, 1243,
+ 1096, 1000,
+ 1180, 1361,
+ 1181, 1362,
+ 1184, 1363,
+ 1185, 1364,
+ 1187, 1365,
+ 1188, 1366,
+ 1246, 1178,
+ 1247, 1182,
+ 1249, 1408,
+ 1250, 1410,
+ 1252, 1411,
+ 1329, 1478,
+ 1367, 1495,
+ 1368, 1496,
+ 1385, 1508,
+ 1407, 1365,
+ 1483, 1592,
+ 1484, 1593,
+ 1594, 1667,
+ 1595, 1668,
+ 1596, 1669,
+ 1597, 1670,
+ 1598, 1671,
+ 1599, 1672,
+ 1602, 1680,
+ 1603, 1681,
+ 1604, 1682,
+ 1605, 1683,
+ 1616, 1694,
+ 1626, 1698,
+ 1630, 966,
+ 1665, 1746,
+ 1673, 1748,
+ 1674, 1749,
+ 1684, 1757,
+ 1685, 1758,
+ 1686, 1759,
+ 1687, 1760,
+ 1701, 1768,
+ 1750, 1802,
+ 1751, 1803,
+ 1761, 1815,
+ 1762, 1816,
+ 1793, 1838,
+ 1804, 1844,
+ 1805, 1845,
+ 1806, 1846,
+ 1807, 1847,
+ 1808, 1848,
+ 1809, 1849,
+ 1811, 1852,
+ 1812, 1853,
+ 1850, 1874,
+ 1851, 1875,
+ 1854, 1876,
+ 1855, 1877,
+ 1856, 1878,
+ 1857, 1879,
+ 1880, 1891,
+ 1881, 1892
};
static int parser_goto_row61[] = {
1,
- -1, 166
+ -1, 181
};
static int parser_goto_row62[] = {
6,
- -1, 167,
- 318, 515,
- 520, 695,
- 522, 697,
- 523, 698,
- 696, 867
+ -1, 182,
+ 345, 556,
+ 561, 750,
+ 563, 752,
+ 564, 753,
+ 751, 926
};
static int parser_goto_row63[] = {
1,
- -1, 168
+ -1, 183
};
static int parser_goto_row64[] = {
- 10,
- -1, 169,
- 524, 699,
- 525, 700,
- 529, 704,
- 530, 705,
- 531, 706,
- 532, 707,
- 533, 708,
- 534, 709,
- 535, 710
+ 8,
+ -1, 184,
+ 567, 756,
+ 568, 757,
+ 569, 758,
+ 570, 759,
+ 571, 760,
+ 572, 761,
+ 573, 762
};
static int parser_goto_row65[] = {
- 3,
- -1, 170,
- 527, 702,
- 528, 703
+ 2,
+ -1, 185,
+ 566, 755
};
static int parser_goto_row66[] = {
- 5,
- -1, 171,
- 536, 711,
- 537, 712,
- 538, 713,
- 539, 714
+ 2,
+ -1, 186,
+ 574, 763
};
static int parser_goto_row67[] = {
- 11,
- -1, 172,
- 118, 267,
- 119, 268,
- 162, 323,
- 163, 324,
- 258, 471,
- 320, 517,
- 374, 323,
- 375, 324,
- 1375, 267,
- 1376, 268
+ 2,
+ -1, 187,
+ 575, 764
};
static int parser_goto_row68[] = {
- 1,
- -1, 173
+ 3,
+ -1, 188,
+ 576, 765,
+ 577, 766
};
static int parser_goto_row69[] = {
- 55,
- -1, 174,
- 12, 72,
- 21, 72,
- 27, 72,
- 31, 72,
- 92, 72,
- 96, 72,
- 146, 72,
- 161, 321,
- 193, 401,
- 221, 72,
- 355, 72,
- 437, 72,
- 503, 72,
- 544, 72,
- 547, 72,
- 683, 72,
- 687, 847,
- 688, 72,
- 740, 72,
- 749, 401,
- 829, 847,
- 831, 72,
- 833, 847,
- 850, 72,
- 920, 72,
- 969, 72,
- 994, 72,
- 1021, 401,
- 1084, 72,
- 1133, 847,
- 1279, 847,
- 1281, 72,
- 1291, 72,
- 1298, 401,
- 1405, 847,
- 1406, 847,
- 1411, 847,
- 1426, 401,
- 1492, 401,
- 1574, 847,
- 1605, 72,
- 1609, 72,
- 1652, 401,
- 1657, 72,
- 1665, 72,
- 1666, 72,
- 1669, 72,
- 1674, 72,
- 1677, 72,
- 1699, 847,
- 1713, 72,
- 1720, 72,
- 1725, 72,
- 1730, 72
+ 3,
+ -1, 189,
+ 578, 767,
+ 579, 768
};
static int parser_goto_row70[] = {
- 1,
- -1, 73
+ 5,
+ -1, 190,
+ 580, 769,
+ 581, 770,
+ 582, 771,
+ 583, 772
};
static int parser_goto_row71[] = {
- 27,
- -1, 74,
- 905, 1052,
- 1043, 1052,
- 1044, 1052,
- 1045, 1052,
- 1176, 1052,
- 1178, 1052,
- 1322, 1052,
- 1324, 1052,
- 1325, 1052,
- 1326, 1052,
- 1327, 1052,
- 1329, 1052,
- 1330, 1052,
- 1331, 1052,
- 1332, 1052,
- 1333, 1052,
- 1334, 1052,
- 1335, 1052,
- 1336, 1052,
- 1337, 1052,
- 1338, 1052,
- 1339, 1052,
- 1340, 1052,
- 1341, 1052,
- 1441, 1052,
- 1788, 1052
+ 15,
+ -1, 191,
+ 127, 291,
+ 128, 292,
+ 129, 293,
+ 176, 350,
+ 177, 351,
+ 178, 352,
+ 282, 508,
+ 347, 558,
+ 405, 350,
+ 406, 351,
+ 414, 352,
+ 1335, 291,
+ 1336, 292,
+ 1337, 293
};
static int parser_goto_row72[] = {
1,
- -1, 402
+ -1, 192
};
static int parser_goto_row73[] = {
- 2,
- -1, 572,
- 574, 751
+ 56,
+ -1, 193,
+ 13, 74,
+ 27, 74,
+ 33, 74,
+ 37, 74,
+ 98, 74,
+ 160, 74,
+ 175, 348,
+ 212, 436,
+ 242, 74,
+ 386, 74,
+ 472, 74,
+ 545, 74,
+ 588, 74,
+ 591, 74,
+ 738, 74,
+ 742, 906,
+ 743, 74,
+ 798, 74,
+ 807, 436,
+ 888, 906,
+ 890, 74,
+ 892, 906,
+ 909, 74,
+ 979, 74,
+ 1036, 74,
+ 1058, 74,
+ 1062, 74,
+ 1089, 436,
+ 1156, 74,
+ 1208, 906,
+ 1216, 74,
+ 1380, 906,
+ 1382, 74,
+ 1393, 74,
+ 1400, 436,
+ 1482, 436,
+ 1501, 906,
+ 1502, 906,
+ 1507, 906,
+ 1522, 436,
+ 1655, 74,
+ 1659, 74,
+ 1692, 906,
+ 1721, 74,
+ 1729, 74,
+ 1730, 74,
+ 1733, 74,
+ 1738, 74,
+ 1741, 74,
+ 1776, 436,
+ 1782, 74,
+ 1789, 74,
+ 1794, 74,
+ 1799, 74,
+ 1817, 906
};
static int parser_goto_row74[] = {
- 1,
- -1, 414
+ 2,
+ -1, 515,
+ 1026, 1196
};
static int parser_goto_row75[] = {
- 2,
- -1, 588,
- 589, 761
+ 1,
+ -1, 75
};
static int parser_goto_row76[] = {
- 4,
- -1, 415,
- 760, 908,
- 1172, 1307,
- 1525, 1582
+ 31,
+ -1, 76,
+ 964, 1121,
+ 1111, 1121,
+ 1112, 1121,
+ 1113, 1121,
+ 1114, 1121,
+ 1253, 1121,
+ 1255, 1121,
+ 1424, 1121,
+ 1426, 1121,
+ 1427, 1121,
+ 1429, 1121,
+ 1430, 1121,
+ 1431, 1121,
+ 1432, 1121,
+ 1433, 1121,
+ 1434, 1121,
+ 1435, 1121,
+ 1436, 1121,
+ 1437, 1121,
+ 1438, 1121,
+ 1439, 1121,
+ 1440, 1121,
+ 1441, 1121,
+ 1442, 1121,
+ 1443, 1121,
+ 1444, 1121,
+ 1445, 1121,
+ 1446, 1121,
+ 1537, 1121,
+ 1883, 1121
};
static int parser_goto_row77[] = {
- 86,
- -1, 75,
- 25, 126,
- 49, 126,
- 116, 126,
- 234, 126,
- 236, 126,
- 237, 126,
- 238, 126,
- 239, 126,
- 256, 126,
- 462, 126,
- 463, 126,
- 480, 126,
- 482, 126,
- 483, 126,
- 484, 126,
- 485, 126,
- 487, 126,
- 488, 126,
- 489, 126,
- 490, 126,
- 491, 126,
- 492, 126,
- 493, 126,
- 494, 126,
- 495, 126,
- 496, 126,
- 497, 126,
- 498, 126,
- 499, 126,
- 619, 126,
- 621, 126,
- 656, 126,
- 793, 126,
- 794, 126,
- 795, 126,
- 796, 126,
- 828, 126,
- 842, 126,
- 905, 1053,
- 949, 126,
- 950, 126,
- 988, 126,
- 989, 126,
- 990, 126,
- 995, 126,
- 996, 126,
- 1017, 126,
- 1043, 1053,
- 1044, 1053,
- 1045, 1053,
- 1145, 126,
- 1146, 126,
- 1176, 1053,
- 1178, 1053,
- 1253, 126,
- 1285, 126,
- 1286, 126,
- 1322, 1053,
- 1324, 1053,
- 1325, 1053,
- 1326, 1053,
- 1327, 1053,
- 1329, 1053,
- 1330, 1053,
- 1331, 1053,
- 1332, 1053,
- 1333, 1053,
- 1334, 1053,
- 1335, 1053,
- 1336, 1053,
- 1337, 1053,
- 1338, 1053,
- 1339, 1053,
- 1340, 1053,
- 1341, 1053,
- 1415, 126,
- 1416, 126,
- 1417, 126,
- 1418, 126,
- 1441, 1053,
- 1505, 126,
- 1518, 126,
- 1519, 126,
- 1540, 126,
- 1788, 1053
+ 1,
+ -1, 437
};
static int parser_goto_row78[] = {
- 1,
- -1, 76
+ 2,
+ -1, 616,
+ 618, 809
};
static int parser_goto_row79[] = {
1,
- -1, 77
+ -1, 449
};
static int parser_goto_row80[] = {
2,
- -1, 229,
- 232, 444
+ -1, 633,
+ 634, 819
};
static int parser_goto_row81[] = {
- 1,
- -1, 230
+ 4,
+ -1, 450,
+ 818, 967,
+ 1249, 1409,
+ 1630, 1700
};
static int parser_goto_row82[] = {
- 2,
- -1, 231,
- 232, 445
+ 93,
+ -1, 77,
+ 31, 136,
+ 54, 136,
+ 125, 136,
+ 254, 136,
+ 256, 136,
+ 257, 136,
+ 258, 136,
+ 259, 136,
+ 280, 136,
+ 497, 136,
+ 498, 136,
+ 519, 136,
+ 521, 136,
+ 522, 136,
+ 524, 136,
+ 525, 136,
+ 526, 136,
+ 527, 136,
+ 528, 136,
+ 529, 136,
+ 530, 136,
+ 531, 136,
+ 532, 136,
+ 533, 136,
+ 534, 136,
+ 535, 136,
+ 536, 136,
+ 537, 136,
+ 538, 136,
+ 539, 136,
+ 540, 136,
+ 541, 136,
+ 668, 136,
+ 670, 136,
+ 708, 136,
+ 851, 136,
+ 852, 136,
+ 853, 136,
+ 854, 136,
+ 887, 136,
+ 901, 136,
+ 964, 1122,
+ 1016, 136,
+ 1017, 136,
+ 1055, 136,
+ 1056, 136,
+ 1057, 136,
+ 1063, 136,
+ 1064, 136,
+ 1085, 136,
+ 1111, 1122,
+ 1112, 1122,
+ 1113, 1122,
+ 1114, 1122,
+ 1166, 136,
+ 1222, 136,
+ 1223, 136,
+ 1253, 1122,
+ 1255, 1122,
+ 1386, 136,
+ 1387, 136,
+ 1424, 1122,
+ 1426, 1122,
+ 1427, 1122,
+ 1429, 1122,
+ 1430, 1122,
+ 1431, 1122,
+ 1432, 1122,
+ 1433, 1122,
+ 1434, 1122,
+ 1435, 1122,
+ 1436, 1122,
+ 1437, 1122,
+ 1438, 1122,
+ 1439, 1122,
+ 1440, 1122,
+ 1441, 1122,
+ 1442, 1122,
+ 1443, 1122,
+ 1444, 1122,
+ 1445, 1122,
+ 1446, 1122,
+ 1511, 136,
+ 1512, 136,
+ 1513, 136,
+ 1514, 136,
+ 1537, 1122,
+ 1610, 136,
+ 1623, 136,
+ 1624, 136,
+ 1645, 136,
+ 1883, 1122
};
static int parser_goto_row83[] = {
- 16,
- -1, 186,
- 148, 308,
- 193, 403,
- 362, 557,
- 749, 403,
- 1021, 403,
- 1076, 1227,
- 1245, 1362,
- 1253, 1386,
- 1298, 403,
- 1426, 403,
- 1492, 403,
- 1540, 1595,
- 1616, 1683,
- 1652, 403,
- 1754, 1791
+ 1,
+ -1, 78
};
static int parser_goto_row84[] = {
- 45,
- -1, 561,
- 40, 187,
- 41, 188,
- 42, 189,
- 43, 190,
- 50, 209,
- 51, 210,
- 52, 211,
- 53, 212,
- 55, 213,
- 112, 259,
- 113, 260,
- 114, 261,
- 115, 262,
- 121, 270,
- 122, 271,
- 123, 272,
- 124, 273,
- 125, 274,
- 231, 443,
- 445, 628,
- 559, 742,
- 737, 887,
- 748, 899,
- 750, 901,
- 759, 906,
- 1017, 1160,
- 1039, 1179,
- 1040, 1180,
- 1041, 1181,
- 1042, 1182,
- 1047, 1189,
- 1048, 1190,
- 1049, 1191,
- 1050, 1192,
- 1051, 1193,
- 1076, 1228,
- 1168, 1304,
- 1303, 1428,
- 1320, 1438,
- 1321, 1439,
- 1425, 1523,
- 1447, 1532,
- 1531, 1588,
- 1581, 1643
+ 1,
+ -1, 79
};
static int parser_goto_row85[] = {
- 1,
- -1, 361
+ 2,
+ -1, 249,
+ 252, 479
};
static int parser_goto_row86[] = {
- 4,
- -1, 1071,
- 919, 1081,
- 1604, 1662,
- 1668, 1721
+ 1,
+ -1, 250
};
static int parser_goto_row87[] = {
- 3,
- -1, 1072,
- 554, 732,
- 876, 1011
+ 2,
+ -1, 251,
+ 252, 480
};
static int parser_goto_row88[] = {
- 2,
- -1, 733,
- 1019, 1163
+ 16,
+ -1, 205,
+ 162, 335,
+ 212, 438,
+ 393, 601,
+ 807, 438,
+ 1089, 438,
+ 1148, 1306,
+ 1166, 1347,
+ 1324, 1467,
+ 1400, 438,
+ 1482, 438,
+ 1522, 438,
+ 1645, 1713,
+ 1666, 1747,
+ 1776, 438,
+ 1865, 1886
};
static int parser_goto_row89[] = {
- 1,
- -1, 1161
+ 45,
+ -1, 605,
+ 45, 206,
+ 46, 207,
+ 47, 208,
+ 48, 209,
+ 55, 231,
+ 56, 232,
+ 57, 233,
+ 58, 234,
+ 60, 235,
+ 121, 283,
+ 122, 284,
+ 123, 285,
+ 124, 286,
+ 131, 295,
+ 132, 296,
+ 133, 297,
+ 134, 298,
+ 135, 299,
+ 251, 478,
+ 480, 677,
+ 603, 800,
+ 795, 946,
+ 806, 958,
+ 808, 960,
+ 817, 965,
+ 1085, 1237,
+ 1107, 1256,
+ 1108, 1257,
+ 1109, 1258,
+ 1110, 1259,
+ 1116, 1267,
+ 1117, 1268,
+ 1118, 1269,
+ 1119, 1270,
+ 1120, 1271,
+ 1148, 1307,
+ 1245, 1406,
+ 1405, 1524,
+ 1422, 1534,
+ 1423, 1535,
+ 1521, 1628,
+ 1541, 1637,
+ 1636, 1706,
+ 1699, 1767
};
static int parser_goto_row90[] = {
- 2,
- -1, 884,
- 885, 1020
+ 1,
+ -1, 392
};
static int parser_goto_row91[] = {
- 4,
- -1, 1222,
- 1082, 1240,
- 1663, 1716,
- 1722, 1764
+ 6,
+ -1, 790,
+ 935, 1079,
+ 969, 1144,
+ 978, 1153,
+ 1654, 1726,
+ 1732, 1790
};
static int parser_goto_row92[] = {
2,
- -1, 1223,
- 1225, 1347
+ -1, 791,
+ 1087, 1240
};
static int parser_goto_row93[] = {
1,
- -1, 1093
+ -1, 1238
};
static int parser_goto_row94[] = {
- 4,
- -1, 1164,
- 1298, 1424,
- 1492, 1554,
- 1652, 1707
+ 2,
+ -1, 943,
+ 944, 1088
};
static int parser_goto_row95[] = {
- 3,
- -1, 1301,
- 1302, 1427,
- 1500, 1427
+ 5,
+ -1, 1302,
+ 1304, 1452,
+ 1319, 1452,
+ 1785, 1452,
+ 1836, 1452
};
static int parser_goto_row96[] = {
- 4,
- -1, 1165,
- 193, 404,
- 749, 900,
- 1426, 1524
+ 1,
+ -1, 991
};
static int parser_goto_row97[] = {
4,
- -1, 737,
- 877, 1012,
- 881, 1017,
- 1469, 1540
+ -1, 1241,
+ 1400, 1520,
+ 1482, 1591,
+ 1776, 1825
};
static int parser_goto_row98[] = {
- 86,
- -1, 325,
- 25, 127,
- 49, 207,
- 107, 254,
- 120, 269,
- 156, 127,
- 234, 447,
- 237, 455,
- 239, 460,
- 275, 478,
- 277, 479,
- 300, 501,
- 347, 447,
- 349, 541,
- 350, 542,
- 390, 207,
- 463, 644,
- 470, 650,
- 502, 681,
- 516, 693,
- 543, 720,
- 578, 455,
- 580, 460,
- 619, 785,
- 621, 790,
- 675, 817,
- 677, 819,
- 715, 785,
- 716, 868,
- 754, 644,
- 794, 942,
- 796, 947,
- 821, 963,
- 822, 964,
- 828, 127,
- 842, 207,
- 870, 1003,
- 871, 1004,
- 878, 1013,
- 895, 790,
- 950, 1114,
- 955, 1117,
- 965, 1124,
- 988, 447,
- 990, 455,
- 996, 460,
- 1005, 1149,
- 1014, 1156,
- 1015, 1157,
- 1029, 942,
- 1030, 947,
- 1034, 1174,
- 1046, 1188,
- 1118, 1269,
- 1119, 1270,
- 1146, 644,
- 1158, 1297,
- 1171, 1114,
- 1194, 1318,
- 1196, 1319,
- 1219, 1343,
- 1271, 1402,
- 1285, 785,
- 1286, 790,
- 1313, 1435,
- 1344, 1468,
- 1377, 1495,
- 1416, 942,
- 1418, 947,
- 1462, 1533,
- 1464, 1535,
- 1497, 1563,
- 1501, 1569,
- 1519, 1114,
- 1537, 1591,
- 1538, 1592,
- 1570, 1638,
- 1584, 1645,
- 1593, 1651,
- 1625, 1688,
- 1646, 1701,
- 1647, 1702,
- 1690, 1741,
- 1691, 1744,
- 1703, 1751,
- 1745, 1786
+ 3,
+ -1, 1403,
+ 1404, 1523,
+ 1490, 1523
};
static int parser_goto_row99[] = {
- 34,
- -1, 128,
- 49, 208,
- 234, 448,
- 236, 452,
- 237, 456,
- 238, 457,
- 239, 461,
- 462, 641,
- 463, 645,
- 619, 786,
- 621, 791,
- 793, 939,
- 794, 943,
- 795, 944,
- 796, 948,
- 828, 967,
- 842, 986,
- 949, 1111,
- 950, 1115,
- 988, 1137,
- 989, 1138,
- 990, 1139,
- 995, 1143,
- 996, 1144,
- 1145, 1289,
- 1146, 1290,
- 1285, 1413,
- 1286, 1414,
- 1415, 1514,
- 1416, 1515,
- 1417, 1516,
- 1418, 1517,
- 1518, 1578,
- 1519, 1579
+ 4,
+ -1, 1242,
+ 212, 439,
+ 807, 959,
+ 1522, 1629
};
static int parser_goto_row100[] = {
- 6,
- -1, 226,
- 140, 299,
- 174, 346,
- 265, 299,
- 321, 346,
- 1392, 1499
+ 4,
+ -1, 795,
+ 936, 1080,
+ 940, 1085,
+ 1568, 1645
};
static int parser_goto_row101[] = {
- 1,
- -1, -1
+ 86,
+ -1, 353,
+ 31, 137,
+ 54, 229,
+ 116, 278,
+ 130, 294,
+ 170, 137,
+ 254, 482,
+ 257, 490,
+ 259, 495,
+ 300, 517,
+ 302, 518,
+ 327, 543,
+ 378, 482,
+ 380, 585,
+ 381, 586,
+ 425, 229,
+ 498, 693,
+ 507, 700,
+ 544, 736,
+ 557, 748,
+ 587, 778,
+ 623, 490,
+ 625, 495,
+ 668, 843,
+ 670, 848,
+ 730, 876,
+ 732, 878,
+ 773, 843,
+ 774, 927,
+ 812, 693,
+ 852, 1009,
+ 854, 1014,
+ 880, 1030,
+ 881, 1031,
+ 887, 137,
+ 901, 229,
+ 929, 1071,
+ 930, 1072,
+ 937, 1081,
+ 954, 848,
+ 1017, 1189,
+ 1022, 1192,
+ 1032, 1199,
+ 1055, 482,
+ 1057, 490,
+ 1064, 495,
+ 1073, 1226,
+ 1082, 1233,
+ 1083, 1234,
+ 1097, 1009,
+ 1098, 1014,
+ 1102, 1251,
+ 1115, 1266,
+ 1193, 1370,
+ 1194, 1371,
+ 1223, 693,
+ 1235, 1399,
+ 1248, 1189,
+ 1272, 1420,
+ 1274, 1421,
+ 1299, 1448,
+ 1338, 1485,
+ 1372, 1498,
+ 1386, 843,
+ 1387, 848,
+ 1415, 1531,
+ 1449, 1567,
+ 1487, 1600,
+ 1491, 1606,
+ 1512, 1009,
+ 1514, 1014,
+ 1561, 1638,
+ 1563, 1640,
+ 1607, 1688,
+ 1624, 1189,
+ 1642, 1709,
+ 1643, 1710,
+ 1675, 1752,
+ 1702, 1769,
+ 1711, 1775,
+ 1754, 1810,
+ 1755, 1813,
+ 1770, 1819,
+ 1771, 1820,
+ 1814, 1858,
+ 1821, 1862
};
static int parser_goto_row102[] = {
- 4,
- -1, 477,
- 438, 618,
- 467, 647,
- 632, 800
+ 34,
+ -1, 138,
+ 54, 230,
+ 254, 483,
+ 256, 487,
+ 257, 491,
+ 258, 492,
+ 259, 496,
+ 497, 690,
+ 498, 694,
+ 668, 844,
+ 670, 849,
+ 851, 1006,
+ 852, 1010,
+ 853, 1011,
+ 854, 1015,
+ 887, 1034,
+ 901, 1053,
+ 1016, 1186,
+ 1017, 1190,
+ 1055, 1212,
+ 1056, 1213,
+ 1057, 1214,
+ 1063, 1220,
+ 1064, 1221,
+ 1222, 1391,
+ 1223, 1392,
+ 1386, 1509,
+ 1387, 1510,
+ 1511, 1619,
+ 1512, 1620,
+ 1513, 1621,
+ 1514, 1622,
+ 1623, 1696,
+ 1624, 1697
};
static int parser_goto_row103[] = {
- 2,
- -1, 814,
- 815, 960
+ 6,
+ -1, 246,
+ 154, 326,
+ 193, 377,
+ 289, 326,
+ 348, 377,
+ 1353, 1489
};
static int parser_goto_row104[] = {
- 3,
- -1, 314,
- 584, 757,
- 978, 1131
+ 4,
+ -1, 516,
+ 473, 667,
+ 504, 697,
+ 681, 858
};
static int parser_goto_row105[] = {
2,
- -1, 315,
- 510, 689
+ -1, 873,
+ 874, 1027
};
static int parser_goto_row106[] = {
- 2,
- -1, 764,
- 593, 767
+ 3,
+ -1, 342,
+ 629, 815,
+ 1045, 1206
};
static int parser_goto_row107[] = {
- 149,
- -1, 175,
- 12, 78,
- 21, 78,
- 25, 129,
- 27, 78,
- 31, 78,
- 49, 129,
- 92, 78,
- 96, 78,
- 116, 264,
- 146, 78,
- 161, 322,
- 193, 405,
- 221, 78,
- 234, 129,
- 236, 129,
- 237, 129,
- 238, 129,
- 239, 129,
- 256, 129,
- 355, 78,
- 437, 78,
- 439, 622,
- 462, 129,
- 463, 129,
- 480, 129,
- 482, 129,
- 483, 129,
- 484, 129,
- 485, 129,
- 487, 129,
- 488, 129,
- 489, 129,
- 490, 129,
- 491, 129,
- 492, 129,
- 493, 129,
- 494, 129,
- 495, 129,
- 496, 129,
- 497, 129,
- 498, 129,
- 499, 129,
- 500, 678,
- 503, 78,
- 540, 717,
- 544, 78,
- 547, 78,
- 619, 129,
- 621, 129,
- 652, 812,
- 656, 129,
- 683, 78,
- 687, 848,
- 688, 78,
- 694, 866,
- 740, 78,
- 747, 622,
- 749, 405,
- 793, 129,
- 794, 129,
- 795, 129,
- 796, 129,
- 828, 129,
- 829, 848,
- 831, 78,
- 833, 848,
- 842, 129,
- 850, 78,
- 905, 1054,
- 920, 78,
- 949, 129,
- 950, 129,
- 969, 78,
- 988, 129,
- 989, 129,
- 990, 129,
- 994, 78,
- 995, 129,
- 996, 129,
- 1021, 405,
- 1043, 1184,
- 1044, 1054,
- 1045, 1054,
- 1084, 78,
- 1133, 848,
- 1136, 622,
- 1145, 129,
- 1146, 129,
- 1176, 1054,
- 1178, 1054,
- 1253, 1387,
- 1279, 848,
- 1281, 78,
- 1285, 129,
- 1286, 129,
- 1291, 78,
- 1298, 405,
- 1322, 1054,
- 1324, 1054,
- 1325, 1054,
- 1326, 1054,
- 1327, 1054,
- 1329, 1054,
- 1330, 1054,
- 1331, 1054,
- 1332, 1054,
- 1333, 1054,
- 1334, 1054,
- 1335, 1054,
- 1336, 1054,
- 1337, 1054,
- 1338, 1054,
- 1339, 1054,
- 1340, 1054,
- 1341, 1054,
- 1342, 1465,
- 1405, 848,
- 1406, 848,
- 1411, 848,
- 1415, 129,
- 1416, 129,
- 1417, 129,
- 1418, 129,
- 1426, 405,
- 1437, 1529,
- 1441, 1054,
- 1492, 405,
- 1505, 129,
- 1518, 129,
- 1519, 129,
- 1540, 1387,
- 1564, 1626,
- 1574, 848,
- 1605, 78,
- 1609, 78,
- 1652, 405,
- 1657, 78,
- 1665, 78,
- 1666, 78,
- 1669, 78,
- 1674, 78,
- 1677, 78,
- 1699, 848,
- 1713, 78,
- 1720, 78,
- 1725, 78,
- 1730, 78,
- 1788, 1054
+ 2,
+ -1, 343,
+ 552, 744
};
static int parser_goto_row108[] = {
- 1,
- -1, 781
+ 2,
+ -1, 822,
+ 638, 825
};
static int parser_goto_row109[] = {
- 6,
- -1, 1239,
- 432, 613,
- 1358, 1476,
- 1482, 1545,
- 1484, 1548,
- 1486, 1551
+ 157,
+ -1, 194,
+ 13, 80,
+ 27, 80,
+ 31, 139,
+ 33, 80,
+ 37, 80,
+ 54, 139,
+ 98, 80,
+ 125, 288,
+ 160, 80,
+ 175, 349,
+ 212, 440,
+ 242, 80,
+ 254, 139,
+ 256, 139,
+ 257, 139,
+ 258, 139,
+ 259, 139,
+ 280, 139,
+ 386, 80,
+ 472, 80,
+ 474, 671,
+ 497, 139,
+ 498, 139,
+ 519, 139,
+ 521, 139,
+ 522, 139,
+ 524, 139,
+ 525, 139,
+ 526, 139,
+ 527, 139,
+ 528, 139,
+ 529, 139,
+ 530, 139,
+ 531, 139,
+ 532, 139,
+ 533, 139,
+ 534, 139,
+ 535, 139,
+ 536, 139,
+ 537, 139,
+ 538, 139,
+ 539, 139,
+ 540, 139,
+ 541, 139,
+ 542, 733,
+ 545, 80,
+ 584, 775,
+ 588, 80,
+ 591, 80,
+ 668, 139,
+ 670, 139,
+ 702, 870,
+ 708, 139,
+ 738, 80,
+ 742, 907,
+ 743, 80,
+ 749, 925,
+ 798, 80,
+ 805, 671,
+ 807, 440,
+ 851, 139,
+ 852, 139,
+ 853, 139,
+ 854, 139,
+ 887, 139,
+ 888, 907,
+ 890, 80,
+ 892, 907,
+ 901, 139,
+ 909, 80,
+ 964, 1123,
+ 979, 80,
+ 1016, 139,
+ 1017, 139,
+ 1036, 80,
+ 1055, 139,
+ 1056, 139,
+ 1057, 139,
+ 1058, 80,
+ 1062, 80,
+ 1063, 139,
+ 1064, 139,
+ 1089, 440,
+ 1111, 1261,
+ 1112, 1123,
+ 1113, 1123,
+ 1114, 1123,
+ 1156, 80,
+ 1166, 1348,
+ 1208, 907,
+ 1211, 671,
+ 1216, 80,
+ 1222, 139,
+ 1223, 139,
+ 1253, 1123,
+ 1255, 1123,
+ 1380, 907,
+ 1382, 80,
+ 1386, 139,
+ 1387, 139,
+ 1393, 80,
+ 1400, 440,
+ 1424, 1123,
+ 1426, 1123,
+ 1427, 1123,
+ 1429, 1123,
+ 1430, 1123,
+ 1431, 1123,
+ 1432, 1123,
+ 1433, 1123,
+ 1434, 1123,
+ 1435, 1123,
+ 1436, 1123,
+ 1437, 1123,
+ 1438, 1123,
+ 1439, 1123,
+ 1440, 1123,
+ 1441, 1123,
+ 1442, 1123,
+ 1443, 1123,
+ 1444, 1123,
+ 1445, 1123,
+ 1446, 1123,
+ 1447, 1564,
+ 1482, 440,
+ 1501, 907,
+ 1502, 907,
+ 1507, 907,
+ 1511, 139,
+ 1512, 139,
+ 1513, 139,
+ 1514, 139,
+ 1522, 440,
+ 1533, 1634,
+ 1537, 1123,
+ 1601, 1676,
+ 1610, 139,
+ 1623, 139,
+ 1624, 139,
+ 1645, 1348,
+ 1655, 80,
+ 1659, 80,
+ 1692, 907,
+ 1721, 80,
+ 1729, 80,
+ 1730, 80,
+ 1733, 80,
+ 1738, 80,
+ 1741, 80,
+ 1776, 440,
+ 1782, 80,
+ 1789, 80,
+ 1794, 80,
+ 1799, 80,
+ 1817, 907,
+ 1883, 1123
};
static int parser_goto_row110[] = {
- 22,
- -1, 79,
- 81, 240,
- 142, 240,
- 177, 240,
- 410, 240,
- 615, 240,
- 624, 240,
- 680, 240,
- 719, 240,
- 765, 240,
- 783, 240,
- 859, 240,
- 880, 240,
- 898, 240,
- 957, 240,
- 1067, 240,
- 1070, 240,
- 1288, 240,
- 1396, 240,
- 1467, 240,
- 1586, 240,
- 1629, 240
+ 1,
+ -1, 839
};
static int parser_goto_row111[] = {
- 178,
- -1, 176,
- 12, 80,
- 21, 80,
- 25, 130,
- 27, 80,
- 31, 80,
- 49, 130,
- 81, 241,
- 92, 80,
- 96, 80,
- 116, 130,
- 142, 301,
- 146, 80,
- 177, 351,
- 193, 406,
- 221, 80,
- 234, 130,
- 236, 130,
- 237, 130,
- 238, 130,
- 239, 130,
- 256, 130,
- 355, 80,
- 410, 581,
- 432, 614,
- 437, 80,
- 439, 623,
- 462, 130,
- 463, 130,
- 480, 130,
- 482, 130,
- 483, 130,
- 484, 130,
- 485, 130,
- 487, 130,
- 488, 130,
- 489, 130,
- 490, 130,
- 491, 130,
- 492, 130,
- 493, 130,
- 494, 130,
- 495, 130,
- 496, 130,
- 497, 130,
- 498, 130,
- 499, 130,
- 500, 679,
- 503, 80,
- 540, 718,
- 544, 80,
- 547, 80,
- 615, 778,
- 617, 782,
- 619, 130,
- 621, 130,
- 624, 797,
- 652, 679,
- 656, 130,
- 680, 823,
- 683, 80,
- 687, 849,
- 688, 80,
- 694, 718,
- 719, 872,
- 730, 879,
- 740, 80,
- 747, 896,
- 749, 406,
- 783, 930,
- 793, 130,
- 794, 130,
- 795, 130,
- 796, 130,
- 811, 956,
- 828, 130,
- 829, 849,
- 831, 80,
- 833, 849,
- 842, 130,
- 850, 80,
- 859, 997,
- 880, 1016,
- 898, 1031,
- 905, 1055,
- 920, 80,
- 949, 130,
- 950, 130,
- 957, 1120,
- 969, 80,
- 988, 130,
- 989, 130,
- 990, 130,
- 994, 80,
- 995, 130,
- 996, 130,
- 1021, 406,
- 1043, 1055,
- 1044, 1055,
- 1045, 1055,
- 1067, 1220,
- 1080, 614,
- 1084, 80,
- 1133, 849,
- 1136, 1287,
- 1145, 130,
- 1146, 130,
- 1176, 1055,
- 1178, 1055,
- 1253, 1388,
- 1279, 849,
- 1281, 80,
- 1285, 130,
- 1286, 130,
- 1288, 1419,
- 1291, 80,
- 1298, 406,
- 1322, 1055,
- 1324, 1055,
- 1325, 1055,
- 1326, 1055,
- 1327, 1055,
- 1329, 1055,
- 1330, 1055,
- 1331, 1055,
- 1332, 1055,
- 1333, 1055,
- 1334, 1055,
- 1335, 1055,
- 1336, 1055,
- 1337, 1055,
- 1338, 1055,
- 1339, 1055,
- 1340, 1055,
- 1341, 1055,
- 1342, 1466,
- 1358, 614,
- 1396, 1502,
- 1405, 849,
- 1406, 849,
- 1411, 849,
- 1415, 130,
- 1416, 130,
- 1417, 130,
- 1418, 130,
- 1426, 406,
- 1437, 1466,
- 1441, 1055,
- 1467, 1539,
- 1473, 614,
- 1482, 614,
- 1484, 614,
- 1486, 614,
- 1492, 406,
- 1505, 130,
- 1518, 130,
- 1519, 130,
- 1528, 1585,
- 1540, 1388,
- 1564, 1627,
- 1574, 849,
- 1586, 1648,
- 1605, 80,
- 1609, 80,
- 1629, 1692,
- 1652, 406,
- 1657, 80,
- 1665, 80,
- 1666, 80,
- 1669, 80,
- 1674, 80,
- 1677, 80,
- 1699, 849,
- 1713, 80,
- 1720, 80,
- 1725, 80,
- 1730, 80,
- 1788, 1055
+ 6,
+ -1, 1318,
+ 467, 662,
+ 1463, 1575,
+ 1472, 1582,
+ 1474, 1585,
+ 1476, 1588
};
static int parser_goto_row112[] = {
- 12,
- -1, 1242,
- 1243, 1360,
- 1664, 1717,
- 1673, 1726,
- 1712, 1758,
- 1718, 1761,
- 1719, 1762,
- 1727, 1768,
- 1729, 1769,
- 1759, 1796,
- 1763, 1797,
- 1770, 1800
+ 22,
+ -1, 81,
+ 83, 260,
+ 156, 260,
+ 196, 260,
+ 445, 260,
+ 664, 260,
+ 673, 260,
+ 735, 260,
+ 777, 260,
+ 823, 260,
+ 841, 260,
+ 918, 260,
+ 939, 260,
+ 957, 260,
+ 1024, 260,
+ 1140, 260,
+ 1143, 260,
+ 1357, 260,
+ 1389, 260,
+ 1566, 260,
+ 1679, 260,
+ 1704, 260
};
static int parser_goto_row113[] = {
- 14,
- -1, 85,
- 766, 913,
- 910, 1073,
- 911, 1074,
- 914, 1075,
- 919, 1082,
- 1091, 1248,
- 1540, 1596,
- 1595, 1653,
- 1597, 1654,
- 1604, 1663,
- 1668, 1722,
- 1754, 1792,
- 1791, 1811
+ 186,
+ -1, 195,
+ 13, 82,
+ 27, 82,
+ 31, 140,
+ 33, 82,
+ 37, 82,
+ 54, 140,
+ 83, 261,
+ 98, 82,
+ 125, 140,
+ 156, 328,
+ 160, 82,
+ 196, 382,
+ 212, 441,
+ 242, 82,
+ 254, 140,
+ 256, 140,
+ 257, 140,
+ 258, 140,
+ 259, 140,
+ 280, 140,
+ 386, 82,
+ 445, 626,
+ 467, 663,
+ 472, 82,
+ 474, 672,
+ 497, 140,
+ 498, 140,
+ 519, 140,
+ 521, 140,
+ 522, 140,
+ 524, 140,
+ 525, 140,
+ 526, 140,
+ 527, 140,
+ 528, 140,
+ 529, 140,
+ 530, 140,
+ 531, 140,
+ 532, 140,
+ 533, 140,
+ 534, 140,
+ 535, 140,
+ 536, 140,
+ 537, 140,
+ 538, 140,
+ 539, 140,
+ 540, 140,
+ 541, 140,
+ 542, 734,
+ 545, 82,
+ 584, 776,
+ 588, 82,
+ 591, 82,
+ 664, 836,
+ 666, 840,
+ 668, 140,
+ 670, 140,
+ 673, 855,
+ 702, 734,
+ 708, 140,
+ 735, 882,
+ 738, 82,
+ 742, 908,
+ 743, 82,
+ 749, 776,
+ 777, 931,
+ 788, 938,
+ 798, 82,
+ 805, 955,
+ 807, 441,
+ 841, 997,
+ 851, 140,
+ 852, 140,
+ 853, 140,
+ 854, 140,
+ 869, 1023,
+ 887, 140,
+ 888, 908,
+ 890, 82,
+ 892, 908,
+ 901, 140,
+ 909, 82,
+ 918, 1065,
+ 939, 1084,
+ 957, 1099,
+ 964, 1124,
+ 979, 82,
+ 1016, 140,
+ 1017, 140,
+ 1024, 1195,
+ 1036, 82,
+ 1055, 140,
+ 1056, 140,
+ 1057, 140,
+ 1058, 82,
+ 1062, 82,
+ 1063, 140,
+ 1064, 140,
+ 1089, 441,
+ 1111, 1124,
+ 1112, 1124,
+ 1113, 1124,
+ 1114, 1124,
+ 1140, 1300,
+ 1152, 663,
+ 1156, 82,
+ 1166, 1349,
+ 1208, 908,
+ 1211, 1388,
+ 1216, 82,
+ 1222, 140,
+ 1223, 140,
+ 1253, 1124,
+ 1255, 1124,
+ 1357, 1492,
+ 1380, 908,
+ 1382, 82,
+ 1386, 140,
+ 1387, 140,
+ 1389, 1515,
+ 1393, 82,
+ 1400, 441,
+ 1424, 1124,
+ 1426, 1124,
+ 1427, 1124,
+ 1429, 1124,
+ 1430, 1124,
+ 1431, 1124,
+ 1432, 1124,
+ 1433, 1124,
+ 1434, 1124,
+ 1435, 1124,
+ 1436, 1124,
+ 1437, 1124,
+ 1438, 1124,
+ 1439, 1124,
+ 1440, 1124,
+ 1441, 1124,
+ 1442, 1124,
+ 1443, 1124,
+ 1444, 1124,
+ 1445, 1124,
+ 1446, 1124,
+ 1447, 1565,
+ 1463, 663,
+ 1472, 663,
+ 1474, 663,
+ 1476, 663,
+ 1482, 441,
+ 1501, 908,
+ 1502, 908,
+ 1507, 908,
+ 1511, 140,
+ 1512, 140,
+ 1513, 140,
+ 1514, 140,
+ 1522, 441,
+ 1533, 1565,
+ 1537, 1124,
+ 1566, 1644,
+ 1572, 663,
+ 1601, 1677,
+ 1610, 140,
+ 1623, 140,
+ 1624, 140,
+ 1633, 1703,
+ 1645, 1349,
+ 1655, 82,
+ 1659, 82,
+ 1679, 1756,
+ 1692, 908,
+ 1704, 1772,
+ 1721, 82,
+ 1729, 82,
+ 1730, 82,
+ 1733, 82,
+ 1738, 82,
+ 1741, 82,
+ 1776, 441,
+ 1782, 82,
+ 1789, 82,
+ 1794, 82,
+ 1799, 82,
+ 1817, 908,
+ 1883, 1124
};
static int parser_goto_row114[] = {
- 56,
- -1, 149,
- 0, 11,
- 4, 11,
- 15, 11,
- 16, 11,
- 17, 11,
- 22, 11,
- 23, 11,
- 24, 11,
- 27, 146,
- 31, 146,
- 62, 221,
- 88, 11,
- 89, 11,
- 93, 11,
- 102, 11,
- 103, 11,
- 105, 11,
- 222, 437,
- 244, 11,
- 250, 11,
- 304, 503,
- 355, 547,
- 504, 683,
- 544, 547,
- 687, 850,
- 688, 146,
- 740, 146,
- 829, 969,
- 831, 547,
- 833, 969,
- 920, 547,
- 992, 221,
- 994, 547,
- 1084, 547,
- 1133, 1281,
- 1141, 437,
- 1279, 1281,
- 1291, 146,
- 1405, 850,
- 1406, 969,
- 1411, 969,
- 1574, 1281,
- 1605, 547,
- 1609, 547,
- 1657, 547,
- 1665, 547,
- 1666, 547,
- 1669, 547,
- 1674, 547,
- 1677, 547,
- 1699, 969,
- 1713, 547,
- 1720, 547,
- 1725, 547,
- 1730, 547
+ 12,
+ -1, 1321,
+ 1322, 1465,
+ 1728, 1786,
+ 1737, 1795,
+ 1781, 1830,
+ 1787, 1833,
+ 1788, 1834,
+ 1796, 1840,
+ 1798, 1841,
+ 1831, 1869,
+ 1835, 1870,
+ 1842, 1873
};
static int parser_goto_row115[] = {
- 255,
- -1, 96,
- 0, 12,
- 4, 21,
- 15, 21,
- 16, 92,
- 22, 21,
- 23, 92,
- 29, 150,
- 30, 151,
- 32, 154,
- 33, 155,
- 39, 184,
- 44, 191,
- 46, 193,
- 47, 194,
- 77, 233,
- 88, 92,
- 102, 92,
- 108, 255,
- 109, 256,
- 110, 257,
- 111, 258,
- 117, 266,
- 157, 317,
- 158, 318,
- 159, 319,
- 160, 320,
- 195, 416,
- 196, 417,
- 214, 422,
- 215, 423,
- 216, 424,
- 217, 425,
- 223, 438,
- 225, 439,
- 230, 442,
- 253, 467,
- 263, 472,
- 278, 480,
- 279, 482,
- 280, 483,
- 281, 484,
- 282, 485,
- 283, 486,
- 284, 487,
- 285, 488,
- 286, 489,
- 287, 490,
- 288, 491,
- 289, 492,
- 290, 493,
- 291, 494,
- 292, 495,
- 293, 496,
- 294, 497,
- 295, 498,
- 296, 499,
- 298, 500,
- 306, 505,
- 309, 508,
- 310, 509,
- 312, 510,
- 314, 511,
- 316, 513,
- 326, 520,
- 327, 522,
- 328, 523,
- 329, 524,
- 330, 525,
- 331, 526,
- 332, 527,
- 333, 528,
- 334, 529,
- 335, 530,
- 336, 531,
- 337, 532,
- 338, 533,
- 339, 534,
- 340, 535,
- 341, 536,
- 342, 537,
- 343, 538,
- 344, 539,
- 345, 540,
- 359, 554,
- 363, 558,
- 373, 194,
- 402, 570,
- 404, 573,
- 411, 583,
- 412, 584,
- 413, 585,
- 426, 592,
- 427, 593,
- 434, 617,
- 446, 629,
- 451, 632,
- 468, 648,
- 474, 652,
- 476, 653,
- 481, 656,
- 506, 685,
- 512, 691,
- 514, 692,
- 518, 694,
- 521, 696,
- 549, 726,
- 553, 730,
- 560, 743,
- 569, 747,
- 571, 749,
- 587, 760,
- 613, 774,
- 620, 787,
- 627, 798,
- 649, 811,
- 676, 818,
- 686, 826,
- 689, 862,
- 690, 863,
- 724, 873,
- 727, 876,
- 732, 882,
- 738, 888,
- 741, 892,
- 756, 903,
- 757, 904,
- 758, 905,
- 762, 909,
- 770, 916,
- 771, 917,
- 773, 924,
- 810, 954,
- 813, 959,
- 830, 973,
- 832, 975,
- 834, 978,
- 840, 984,
- 865, 1001,
- 875, 1010,
- 883, 1019,
- 886, 1021,
- 889, 1023,
- 893, 1026,
- 907, 1068,
- 918, 1080,
- 926, 1087,
- 927, 1094,
- 931, 1097,
- 932, 1098,
- 961, 1122,
- 962, 1123,
- 987, 1136,
- 1000, 1147,
- 1006, 1150,
- 1007, 1151,
- 1011, 1154,
- 1025, 1167,
- 1032, 1172,
- 1033, 1173,
- 1035, 1175,
- 1036, 1176,
- 1037, 1177,
- 1038, 1178,
- 1056, 1197,
- 1073, 1224,
- 1078, 1232,
- 1082, 1224,
- 1092, 1094,
- 1095, 1256,
- 1116, 1268,
- 1121, 1272,
- 1128, 1276,
- 1129, 1277,
- 1131, 1278,
- 1134, 1283,
- 1148, 1292,
- 1159, 1298,
- 1164, 1299,
- 1183, 1315,
- 1198, 1322,
- 1199, 1324,
- 1200, 1325,
- 1201, 1326,
- 1202, 1327,
- 1203, 1328,
- 1204, 1329,
- 1205, 1330,
- 1206, 1331,
- 1207, 1332,
- 1208, 1333,
- 1209, 1334,
- 1210, 1335,
- 1211, 1336,
- 1212, 1337,
- 1213, 1338,
- 1214, 1339,
- 1215, 1340,
- 1216, 1341,
- 1218, 1342,
- 1225, 1224,
- 1229, 1351,
- 1230, 1352,
- 1233, 1354,
- 1246, 1365,
- 1258, 1397,
- 1259, 1398,
- 1274, 1403,
- 1275, 1404,
- 1300, 1426,
- 1306, 1429,
- 1308, 1430,
- 1309, 1431,
- 1317, 1437,
- 1323, 1441,
- 1350, 1471,
- 1355, 1473,
- 1363, 1478,
- 1366, 1481,
- 1374, 1492,
- 1401, 1505,
- 1407, 1511,
- 1422, 1521,
- 1424, 1522,
- 1434, 1528,
- 1463, 1534,
- 1475, 1542,
- 1484, 774,
- 1486, 774,
- 1487, 1552,
- 1498, 1564,
- 1503, 1571,
- 1506, 1573,
- 1526, 1583,
- 1545, 774,
- 1548, 774,
- 1551, 774,
- 1576, 1642,
- 1589, 1649,
- 1590, 1650,
- 1594, 1652,
- 1598, 1655,
- 1600, 1656,
- 1644, 1700,
- 1663, 1224,
- 1670, 1724,
- 1705, 1752,
- 1706, 1753,
- 1709, 1755,
- 1710, 1756,
- 1711, 1757,
- 1722, 1224,
- 1750, 1788,
- 1789, 1810,
- 1793, 1812
+ 14,
+ -1, 91,
+ 824, 972,
+ 969, 1145,
+ 970, 1146,
+ 973, 1147,
+ 978, 1154,
+ 989, 1161,
+ 1645, 1714,
+ 1654, 1727,
+ 1713, 1777,
+ 1715, 1778,
+ 1732, 1791,
+ 1865, 1887,
+ 1886, 1895
};
static int parser_goto_row116[] = {
- 1,
- -1, 13
+ 55,
+ -1, 591,
+ 0, 12,
+ 3, 23,
+ 5, 12,
+ 18, 12,
+ 19, 12,
+ 20, 12,
+ 28, 12,
+ 29, 12,
+ 30, 12,
+ 33, 160,
+ 37, 160,
+ 64, 242,
+ 94, 12,
+ 95, 12,
+ 99, 12,
+ 104, 269,
+ 105, 270,
+ 111, 12,
+ 112, 12,
+ 114, 12,
+ 243, 472,
+ 265, 12,
+ 271, 502,
+ 274, 12,
+ 331, 545,
+ 546, 738,
+ 742, 909,
+ 743, 160,
+ 798, 160,
+ 839, 992,
+ 888, 1036,
+ 892, 1036,
+ 990, 992,
+ 994, 992,
+ 1060, 242,
+ 1145, 992,
+ 1154, 992,
+ 1208, 1382,
+ 1218, 472,
+ 1304, 992,
+ 1319, 992,
+ 1380, 1382,
+ 1393, 160,
+ 1468, 992,
+ 1501, 909,
+ 1502, 1036,
+ 1507, 1036,
+ 1579, 992,
+ 1692, 1382,
+ 1727, 992,
+ 1785, 992,
+ 1791, 992,
+ 1817, 1036,
+ 1836, 992
};
static int parser_goto_row117[] = {
- 1,
- -1, 14
+ 18,
+ -1, 98,
+ 0, 13,
+ 5, 27,
+ 18, 27,
+ 28, 27,
+ 839, 993,
+ 990, 993,
+ 994, 1169,
+ 1145, 1303,
+ 1154, 1303,
+ 1304, 1303,
+ 1319, 1303,
+ 1468, 993,
+ 1579, 993,
+ 1727, 1303,
+ 1785, 1303,
+ 1791, 1303,
+ 1836, 1303
};
static int parser_goto_row118[] = {
- 4,
- -1, 923,
- 1550, 1612,
- 1602, 1660,
- 1613, 1680
+ 249,
+ -1, 14,
+ 35, 163,
+ 36, 166,
+ 38, 169,
+ 44, 203,
+ 49, 210,
+ 51, 212,
+ 52, 213,
+ 79, 253,
+ 84, 262,
+ 117, 279,
+ 118, 280,
+ 119, 281,
+ 120, 282,
+ 126, 290,
+ 171, 344,
+ 172, 345,
+ 173, 346,
+ 174, 347,
+ 214, 451,
+ 215, 452,
+ 236, 457,
+ 237, 458,
+ 238, 459,
+ 239, 460,
+ 244, 473,
+ 245, 474,
+ 250, 477,
+ 277, 504,
+ 287, 509,
+ 303, 519,
+ 304, 521,
+ 305, 522,
+ 306, 523,
+ 307, 524,
+ 308, 525,
+ 309, 526,
+ 310, 527,
+ 311, 528,
+ 312, 529,
+ 313, 530,
+ 314, 531,
+ 315, 532,
+ 316, 533,
+ 317, 534,
+ 318, 535,
+ 319, 536,
+ 320, 537,
+ 321, 538,
+ 322, 539,
+ 323, 540,
+ 324, 541,
+ 325, 542,
+ 333, 547,
+ 336, 550,
+ 338, 551,
+ 340, 552,
+ 342, 553,
+ 354, 561,
+ 355, 563,
+ 356, 564,
+ 357, 565,
+ 358, 566,
+ 359, 567,
+ 360, 568,
+ 361, 569,
+ 362, 570,
+ 363, 571,
+ 364, 572,
+ 365, 573,
+ 366, 574,
+ 367, 575,
+ 368, 576,
+ 369, 577,
+ 370, 578,
+ 371, 579,
+ 372, 580,
+ 373, 581,
+ 374, 582,
+ 375, 583,
+ 376, 584,
+ 390, 598,
+ 394, 602,
+ 404, 213,
+ 437, 614,
+ 439, 617,
+ 446, 628,
+ 447, 629,
+ 448, 630,
+ 461, 637,
+ 462, 638,
+ 469, 666,
+ 481, 678,
+ 486, 681,
+ 499, 695,
+ 505, 698,
+ 511, 702,
+ 515, 705,
+ 520, 708,
+ 548, 740,
+ 554, 746,
+ 555, 747,
+ 559, 749,
+ 562, 751,
+ 593, 784,
+ 597, 788,
+ 604, 801,
+ 613, 805,
+ 615, 807,
+ 632, 818,
+ 662, 832,
+ 669, 845,
+ 676, 856,
+ 699, 869,
+ 731, 877,
+ 741, 885,
+ 744, 921,
+ 745, 922,
+ 782, 932,
+ 785, 935,
+ 790, 941,
+ 796, 947,
+ 799, 951,
+ 814, 962,
+ 815, 963,
+ 816, 964,
+ 820, 968,
+ 828, 975,
+ 829, 976,
+ 831, 983,
+ 868, 1021,
+ 872, 1026,
+ 889, 1040,
+ 891, 1042,
+ 893, 1045,
+ 899, 1051,
+ 924, 1069,
+ 934, 1078,
+ 942, 1087,
+ 945, 1089,
+ 948, 1091,
+ 952, 1094,
+ 966, 1141,
+ 977, 1152,
+ 985, 1159,
+ 994, 1170,
+ 998, 1172,
+ 999, 1173,
+ 1028, 1197,
+ 1029, 1198,
+ 1054, 1211,
+ 1068, 1224,
+ 1074, 1227,
+ 1075, 1228,
+ 1079, 1231,
+ 1093, 1244,
+ 1100, 1249,
+ 1101, 1250,
+ 1103, 1252,
+ 1104, 1253,
+ 1105, 1254,
+ 1106, 1255,
+ 1125, 1275,
+ 1150, 1311,
+ 1191, 1369,
+ 1196, 1373,
+ 1203, 1377,
+ 1204, 1378,
+ 1206, 1379,
+ 1209, 1384,
+ 1225, 1394,
+ 1236, 1400,
+ 1241, 1401,
+ 1260, 1417,
+ 1276, 1424,
+ 1277, 1426,
+ 1278, 1427,
+ 1279, 1428,
+ 1280, 1429,
+ 1281, 1430,
+ 1282, 1431,
+ 1283, 1432,
+ 1284, 1433,
+ 1285, 1434,
+ 1286, 1435,
+ 1287, 1436,
+ 1288, 1437,
+ 1289, 1438,
+ 1290, 1439,
+ 1291, 1440,
+ 1292, 1441,
+ 1293, 1442,
+ 1294, 1443,
+ 1295, 1444,
+ 1296, 1445,
+ 1297, 1446,
+ 1298, 1447,
+ 1308, 1456,
+ 1309, 1457,
+ 1312, 1459,
+ 1334, 1482,
+ 1359, 1493,
+ 1360, 1494,
+ 1375, 1499,
+ 1376, 1500,
+ 1402, 1522,
+ 1408, 1525,
+ 1410, 1526,
+ 1411, 1527,
+ 1419, 1533,
+ 1425, 1537,
+ 1455, 1570,
+ 1460, 1572,
+ 1466, 1576,
+ 1469, 1580,
+ 1474, 832,
+ 1476, 832,
+ 1477, 1589,
+ 1488, 1601,
+ 1497, 1610,
+ 1503, 1616,
+ 1518, 1626,
+ 1520, 1627,
+ 1530, 1633,
+ 1562, 1639,
+ 1574, 1647,
+ 1577, 1648,
+ 1582, 832,
+ 1585, 832,
+ 1588, 832,
+ 1608, 1689,
+ 1611, 1691,
+ 1631, 1701,
+ 1694, 1766,
+ 1707, 1773,
+ 1708, 1774,
+ 1712, 1776,
+ 1716, 1779,
+ 1718, 1780,
+ 1734, 1793,
+ 1768, 1818,
+ 1823, 1863,
+ 1824, 1864,
+ 1827, 1866,
+ 1828, 1867,
+ 1829, 1868,
+ 1861, 1883,
+ 1884, 1894,
+ 1888, 1896
};
static int parser_goto_row119[] = {
- 13,
- -1, 407,
- 406, 579,
- 410, 582,
- 581, 755,
- 896, 579,
- 898, 582,
- 1031, 755,
- 1388, 579,
- 1396, 582,
- 1502, 755,
- 1627, 579,
- 1629, 582,
- 1692, 755
+ 4,
+ -1, 15,
+ 22, 106,
+ 25, 106,
+ 165, 106
};
static int parser_goto_row120[] = {
- 5,
- -1, 408,
- 747, 897,
- 1253, 1389,
- 1540, 1389,
- 1564, 1628
+ 1,
+ -1, 16
};
static int parser_goto_row121[] = {
- 1,
- -1, 1448
+ 4,
+ -1, 982,
+ 1587, 1662,
+ 1652, 1724,
+ 1663, 1744
};
static int parser_goto_row122[] = {
- 2,
- -1, 1056,
- 1788, 1809
+ 13,
+ -1, 442,
+ 441, 624,
+ 445, 627,
+ 626, 813,
+ 955, 624,
+ 957, 627,
+ 1099, 813,
+ 1349, 624,
+ 1357, 627,
+ 1492, 813,
+ 1677, 624,
+ 1679, 627,
+ 1756, 813
};
static int parser_goto_row123[] = {
- 1,
- -1, 1057
+ 5,
+ -1, 443,
+ 805, 956,
+ 1166, 1350,
+ 1601, 1678,
+ 1645, 1350
};
static int parser_goto_row124[] = {
- 6,
- -1, 1058,
- 1176, 1310,
- 1322, 1440,
- 1324, 1442,
- 1325, 1443,
- 1441, 1530
+ 1,
+ -1, 1542
};
static int parser_goto_row125[] = {
- 1,
- -1, 1059
+ 2,
+ -1, 1125,
+ 1883, 1893
};
static int parser_goto_row126[] = {
- 10,
- -1, 1060,
- 1326, 1444,
- 1327, 1445,
- 1331, 1451,
- 1332, 1452,
- 1333, 1453,
- 1334, 1454,
- 1335, 1455,
- 1336, 1456,
- 1337, 1457
+ 1,
+ -1, 1126
};
static int parser_goto_row127[] = {
- 3,
- -1, 1061,
- 1329, 1449,
- 1330, 1450
+ 6,
+ -1, 1127,
+ 1253, 1412,
+ 1424, 1536,
+ 1426, 1538,
+ 1427, 1539,
+ 1537, 1635
};
static int parser_goto_row128[] = {
- 5,
- -1, 1062,
- 1338, 1458,
- 1339, 1459,
- 1340, 1460,
- 1341, 1461
+ 1,
+ -1, 1128
};
static int parser_goto_row129[] = {
- 4,
- -1, 1063,
- 1044, 1186,
- 1045, 1187,
- 1178, 1314
+ 8,
+ -1, 1129,
+ 1430, 1544,
+ 1431, 1545,
+ 1432, 1546,
+ 1433, 1547,
+ 1434, 1548,
+ 1435, 1549,
+ 1436, 1550
};
static int parser_goto_row130[] = {
- 1,
- -1, 1064
+ 2,
+ -1, 1130,
+ 1429, 1543
};
static int parser_goto_row131[] = {
2,
- -1, 1065,
- 1043, 1185
+ -1, 1131,
+ 1437, 1551
};
static int parser_goto_row132[] = {
- 1,
- -1, 1066
+ 2,
+ -1, 1132,
+ 1438, 1552
};
static int parser_goto_row133[] = {
- 4,
- -1, 358,
- 257, 470,
- 319, 516,
- 472, 651
+ 3,
+ -1, 1133,
+ 1439, 1553,
+ 1440, 1554
};
static int parser_goto_row134[] = {
- 1,
- -1, -1
+ 3,
+ -1, 1134,
+ 1441, 1555,
+ 1442, 1556
};
static int parser_goto_row135[] = {
- 1,
- -1, 1390
+ 5,
+ -1, 1135,
+ 1443, 1557,
+ 1444, 1558,
+ 1445, 1559,
+ 1446, 1560
};
static int parser_goto_row136[] = {
- 4,
- -1, 131,
- 1253, 1391,
- 1505, 1572,
- 1540, 1391
+ 5,
+ -1, 1136,
+ 1112, 1263,
+ 1113, 1264,
+ 1114, 1265,
+ 1255, 1416
};
static int parser_goto_row137[] = {
1,
- -1, 132
+ -1, 1137
};
static int parser_goto_row138[] = {
- 6,
- -1, 133,
- 256, 469,
- 480, 655,
- 482, 657,
- 483, 658,
- 656, 816
+ 2,
+ -1, 1138,
+ 1111, 1262
};
static int parser_goto_row139[] = {
1,
- -1, 134
+ -1, -1
};
static int parser_goto_row140[] = {
- 10,
- -1, 135,
- 484, 659,
- 485, 660,
- 489, 664,
- 490, 665,
- 491, 666,
- 492, 667,
- 493, 668,
- 494, 669,
- 495, 670
+ 1,
+ -1, 1139
};
static int parser_goto_row141[] = {
- 3,
- -1, 136,
- 487, 662,
- 488, 663
+ 4,
+ -1, 389,
+ 281, 507,
+ 346, 557,
+ 509, 701
};
static int parser_goto_row142[] = {
- 5,
- -1, 137,
- 496, 671,
- 497, 672,
- 498, 673,
- 499, 674
+ 1,
+ -1, -1
};
static int parser_goto_row143[] = {
1,
- -1, 138
+ -1, 1351
};
static int parser_goto_row144[] = {
- 1,
- -1, 139
+ 4,
+ -1, 141,
+ 1166, 1352,
+ 1610, 1690,
+ 1645, 1352
};
static int parser_goto_row145[] = {
- 4,
- -1, 140,
- 116, 265,
- 1253, 1392,
- 1540, 1392
+ 1,
+ -1, 142
};
static int parser_goto_row146[] = {
- 2,
- -1, 141,
- 1017, 1162
+ 6,
+ -1, 143,
+ 280, 506,
+ 519, 707,
+ 521, 709,
+ 522, 710,
+ 708, 875
};
static int parser_goto_row147[] = {
1,
- -1, 551
+ -1, 144
};
static int parser_goto_row148[] = {
- 7,
- -1, 552,
- 548, 725,
- 1012, 1155,
- 1153, 1295,
- 1293, 1423,
- 1312, 1433,
- 1432, 1527
+ 8,
+ -1, 145,
+ 525, 713,
+ 526, 714,
+ 527, 715,
+ 528, 716,
+ 529, 717,
+ 530, 718,
+ 531, 719
};
static int parser_goto_row149[] = {
- 1,
- -1, 729
+ 2,
+ -1, 146,
+ 524, 712
};
static int parser_goto_row150[] = {
- 1,
- -1, -1
+ 2,
+ -1, 147,
+ 532, 720
};
static int parser_goto_row151[] = {
2,
- -1, 1393,
- 1540, 1597
+ -1, 148,
+ 533, 721
};
static int parser_goto_row152[] = {
- 1,
- -1, 1394
+ 3,
+ -1, 149,
+ 534, 722,
+ 535, 723
};
static int parser_goto_row153[] = {
- 2,
- -1, 1313,
- 1315, 1436
+ 3,
+ -1, 150,
+ 536, 724,
+ 537, 725
};
static int parser_goto_row154[] = {
- 1,
- -1, -1
+ 5,
+ -1, 151,
+ 538, 726,
+ 539, 727,
+ 540, 728,
+ 541, 729
};
static int parser_goto_row155[] = {
1,
- -1, -1
+ -1, 152
};
static int parser_goto_row156[] = {
1,
- -1, -1
+ -1, 153
};
static int parser_goto_row157[] = {
- 1,
- -1, -1
+ 4,
+ -1, 154,
+ 125, 289,
+ 1166, 1353,
+ 1645, 1353
};
static int parser_goto_row158[] = {
1,
-1, -1
};
static int parser_goto_row159[] = {
- 1,
- -1, -1
+ 2,
+ -1, 155,
+ 1085, 1239
};
static int parser_goto_row160[] = {
1,
- -1, -1
+ -1, 595
};
static int parser_goto_row161[] = {
- 1,
- -1, -1
+ 7,
+ -1, 596,
+ 592, 783,
+ 1080, 1232,
+ 1230, 1397,
+ 1395, 1519,
+ 1414, 1529,
+ 1528, 1632
};
static int parser_goto_row162[] = {
1,
- -1, -1
+ -1, 787
};
static int parser_goto_row163[] = {
1,
-1, -1
};
static int parser_goto_row164[] = {
- 1,
- -1, -1
+ 2,
+ -1, 1354,
+ 1645, 1715
};
static int parser_goto_row165[] = {
1,
- -1, -1
+ -1, 1355
};
static int parser_goto_row166[] = {
- 8,
- -1, 970,
- 833, 976,
- 1133, 1282,
- 1279, 1408,
- 1406, 1509,
- 1411, 1512,
- 1574, 1641,
- 1699, 1748
+ 2,
+ -1, 1415,
+ 1417, 1532
};
static int parser_goto_row167[] = {
- 3,
- -1, 971,
- 687, 851,
- 1405, 1508
+ 1,
+ -1, -1
};
static int parser_goto_row168[] = {
1,
- -1, 852
+ -1, -1
};
static int parser_goto_row169[] = {
1,
- -1, 853
+ -1, -1
};
static int parser_goto_row170[] = {
1,
- -1, 854
+ -1, -1
};
static int parser_goto_row171[] = {
1,
- -1, 855
+ -1, -1
};
static int parser_goto_row172[] = {
1,
- -1, 856
+ -1, -1
};
static int parser_goto_row173[] = {
1,
- -1, 857
+ -1, -1
};
static int parser_goto_row174[] = {
1,
- -1, 858
+ -1, -1
};
static int parser_goto_row175[] = {
1,
-1, -1
};
static int parser_goto_row176[] = {
- 10,
- -1, 147,
- 31, 153,
- 688, 861,
- 740, 891,
- 829, 972,
- 833, 977,
- 1291, 1421,
- 1406, 1510,
- 1411, 1513,
- 1699, 1749
+ 1,
+ -1, -1
};
static int parser_goto_row177[] = {
1,
};
static int parser_goto_row178[] = {
1,
- -1, 409
+ -1, -1
};
static int parser_goto_row179[] = {
1,
- -1, 1395
+ -1, -1
};
static int parser_goto_row180[] = {
1,
};
static int parser_goto_row182[] = {
1,
- -1, 1253
+ -1, -1
};
static int parser_goto_row183[] = {
- 2,
- -1, 15,
- 4, 22
+ 1,
+ -1, -1
};
static int parser_goto_row184[] = {
- 4,
- -1, 16,
- 4, 23,
- 15, 88,
- 22, 102
+ 8,
+ -1, 1037,
+ 892, 1043,
+ 1208, 1383,
+ 1380, 1504,
+ 1502, 1614,
+ 1507, 1617,
+ 1692, 1765,
+ 1817, 1859
};
static int parser_goto_row185[] = {
- 8,
- -1, 17,
- 4, 24,
- 15, 89,
- 16, 93,
- 22, 103,
- 23, 105,
- 88, 244,
- 102, 250
+ 3,
+ -1, 1038,
+ 742, 910,
+ 1501, 1613
};
static int parser_goto_row186[] = {
1,
- -1, 1366
+ -1, 911
};
static int parser_goto_row187[] = {
1,
- -1, 1095
+ -1, 912
};
static int parser_goto_row188[] = {
1,
- -1, 1233
+ -1, 913
};
static int parser_goto_row189[] = {
1,
- -1, 1357
+ -1, 914
};
static int parser_goto_row190[] = {
1,
- -1, 1009
+ -1, 915
};
static int parser_goto_row191[] = {
- 3,
- -1, 222,
- 304, 504,
- 992, 1141
+ 1,
+ -1, 916
};
static int parser_goto_row192[] = {
1,
- -1, 574
+ -1, 917
};
static int parser_goto_row193[] = {
1,
- -1, 589
+ -1, -1
};
static int parser_goto_row194[] = {
- 1,
- -1, 232
+ 10,
+ -1, 161,
+ 37, 168,
+ 743, 920,
+ 798, 950,
+ 888, 1039,
+ 892, 1044,
+ 1393, 1517,
+ 1502, 1615,
+ 1507, 1618,
+ 1817, 1860
};
static int parser_goto_row195[] = {
1,
- -1, 885
+ -1, -1
};
static int parser_goto_row196[] = {
1,
- -1, 1225
+ -1, 444
};
static int parser_goto_row197[] = {
- 2,
- -1, 1302,
- 1394, 1500
+ 1,
+ -1, 1356
};
static int parser_goto_row198[] = {
1,
- -1, 815
+ -1, -1
};
static int parser_goto_row199[] = {
- 162,
- -1, 177,
- 12, 81,
- 21, 81,
- 25, 142,
- 27, 81,
- 31, 81,
- 49, 142,
- 92, 81,
- 96, 81,
- 116, 142,
- 146, 81,
- 193, 410,
- 221, 81,
- 234, 142,
- 236, 142,
- 237, 142,
- 238, 142,
- 239, 142,
- 256, 142,
- 355, 81,
- 432, 615,
- 437, 81,
- 439, 624,
- 462, 142,
- 463, 142,
- 480, 142,
- 482, 142,
- 483, 142,
- 484, 142,
- 485, 142,
- 487, 142,
- 488, 142,
- 489, 142,
- 490, 142,
- 491, 142,
- 492, 142,
- 493, 142,
- 494, 142,
- 495, 142,
- 496, 142,
- 497, 142,
- 498, 142,
- 499, 142,
- 500, 680,
- 503, 81,
- 540, 719,
- 544, 81,
- 547, 81,
- 592, 765,
- 593, 765,
- 617, 783,
- 619, 142,
- 621, 142,
- 652, 680,
- 656, 142,
- 683, 81,
- 687, 859,
- 688, 81,
- 694, 719,
- 730, 880,
- 740, 81,
- 747, 898,
- 749, 410,
- 793, 142,
- 794, 142,
- 795, 142,
- 796, 142,
- 811, 957,
- 828, 142,
- 829, 859,
- 831, 81,
- 833, 859,
- 842, 142,
- 850, 81,
- 905, 1067,
- 909, 1070,
- 920, 81,
- 949, 142,
- 950, 142,
- 969, 81,
- 988, 142,
- 989, 142,
- 990, 142,
- 994, 81,
- 995, 142,
- 996, 142,
- 1021, 410,
- 1043, 1067,
- 1044, 1067,
- 1045, 1067,
- 1080, 615,
- 1084, 81,
- 1133, 859,
- 1136, 1288,
- 1145, 142,
- 1146, 142,
- 1176, 1067,
- 1178, 1067,
- 1253, 1396,
- 1279, 859,
- 1281, 81,
- 1285, 142,
- 1286, 142,
- 1291, 81,
- 1298, 410,
- 1322, 1067,
- 1324, 1067,
- 1325, 1067,
- 1326, 1067,
- 1327, 1067,
- 1329, 1067,
- 1330, 1067,
- 1331, 1067,
- 1332, 1067,
- 1333, 1067,
- 1334, 1067,
- 1335, 1067,
- 1336, 1067,
- 1337, 1067,
- 1338, 1067,
- 1339, 1067,
- 1340, 1067,
- 1341, 1067,
- 1342, 1467,
- 1358, 615,
- 1405, 859,
- 1406, 859,
- 1411, 859,
- 1415, 142,
- 1416, 142,
- 1417, 142,
- 1418, 142,
- 1426, 410,
- 1437, 1467,
- 1441, 1067,
- 1473, 615,
- 1482, 615,
- 1484, 615,
- 1486, 615,
- 1492, 410,
- 1505, 142,
- 1518, 142,
- 1519, 142,
- 1528, 1586,
- 1540, 1396,
- 1564, 1629,
- 1574, 859,
- 1605, 81,
- 1609, 81,
- 1652, 410,
- 1657, 81,
- 1665, 81,
- 1666, 81,
- 1669, 81,
- 1674, 81,
- 1677, 81,
- 1699, 859,
- 1713, 81,
- 1720, 81,
- 1725, 81,
- 1730, 81,
- 1788, 1067
+ 1,
+ -1, -1
};
static int parser_goto_row200[] = {
+ 1,
+ -1, 1166
+};
+static int parser_goto_row201[] = {
+ 1,
+ -1, 17
+};
+static int parser_goto_row202[] = {
2,
-1, 18,
- 13, 82
+ 5, 28
};
-static int parser_goto_row201[] = {
- 3,
+static int parser_goto_row203[] = {
+ 4,
-1, 19,
- 18, 98,
- 82, 242
+ 5, 29,
+ 18, 94,
+ 28, 111
+};
+static int parser_goto_row204[] = {
+ 8,
+ -1, 20,
+ 5, 30,
+ 18, 95,
+ 19, 99,
+ 28, 112,
+ 29, 114,
+ 94, 265,
+ 111, 274
+};
+static int parser_goto_row205[] = {
+ 1,
+ -1, 1471
+};
+static int parser_goto_row206[] = {
+ 1,
+ -1, 994
+};
+static int parser_goto_row207[] = {
+ 4,
+ -1, 1304,
+ 1154, 1319,
+ 1727, 1785,
+ 1791, 1836
+};
+static int parser_goto_row208[] = {
+ 1,
+ -1, 1312
+};
+static int parser_goto_row209[] = {
+ 1,
+ -1, 1462
+};
+static int parser_goto_row210[] = {
+ 1,
+ -1, 1077
+};
+static int parser_goto_row211[] = {
+ 3,
+ -1, 243,
+ 331, 546,
+ 1060, 1218
+};
+static int parser_goto_row212[] = {
+ 1,
+ -1, 618
+};
+static int parser_goto_row213[] = {
+ 1,
+ -1, 634
+};
+static int parser_goto_row214[] = {
+ 1,
+ -1, 252
+};
+static int parser_goto_row215[] = {
+ 1,
+ -1, 944
+};
+static int parser_goto_row216[] = {
+ 2,
+ -1, 1404,
+ 1355, 1490
+};
+static int parser_goto_row217[] = {
+ 1,
+ -1, 874
+};
+static int parser_goto_row218[] = {
+ 170,
+ -1, 196,
+ 13, 83,
+ 27, 83,
+ 31, 156,
+ 33, 83,
+ 37, 83,
+ 54, 156,
+ 98, 83,
+ 125, 156,
+ 160, 83,
+ 212, 445,
+ 242, 83,
+ 254, 156,
+ 256, 156,
+ 257, 156,
+ 258, 156,
+ 259, 156,
+ 280, 156,
+ 386, 83,
+ 467, 664,
+ 472, 83,
+ 474, 673,
+ 497, 156,
+ 498, 156,
+ 519, 156,
+ 521, 156,
+ 522, 156,
+ 524, 156,
+ 525, 156,
+ 526, 156,
+ 527, 156,
+ 528, 156,
+ 529, 156,
+ 530, 156,
+ 531, 156,
+ 532, 156,
+ 533, 156,
+ 534, 156,
+ 535, 156,
+ 536, 156,
+ 537, 156,
+ 538, 156,
+ 539, 156,
+ 540, 156,
+ 541, 156,
+ 542, 735,
+ 545, 83,
+ 584, 777,
+ 588, 83,
+ 591, 83,
+ 637, 823,
+ 638, 823,
+ 666, 841,
+ 668, 156,
+ 670, 156,
+ 702, 735,
+ 708, 156,
+ 738, 83,
+ 742, 918,
+ 743, 83,
+ 749, 777,
+ 788, 939,
+ 798, 83,
+ 805, 957,
+ 807, 445,
+ 851, 156,
+ 852, 156,
+ 853, 156,
+ 854, 156,
+ 869, 1024,
+ 887, 156,
+ 888, 918,
+ 890, 83,
+ 892, 918,
+ 901, 156,
+ 909, 83,
+ 964, 1140,
+ 968, 1143,
+ 979, 83,
+ 1016, 156,
+ 1017, 156,
+ 1036, 83,
+ 1055, 156,
+ 1056, 156,
+ 1057, 156,
+ 1058, 83,
+ 1062, 83,
+ 1063, 156,
+ 1064, 156,
+ 1089, 445,
+ 1111, 1140,
+ 1112, 1140,
+ 1113, 1140,
+ 1114, 1140,
+ 1152, 664,
+ 1156, 83,
+ 1166, 1357,
+ 1208, 918,
+ 1211, 1389,
+ 1216, 83,
+ 1222, 156,
+ 1223, 156,
+ 1253, 1140,
+ 1255, 1140,
+ 1380, 918,
+ 1382, 83,
+ 1386, 156,
+ 1387, 156,
+ 1393, 83,
+ 1400, 445,
+ 1424, 1140,
+ 1426, 1140,
+ 1427, 1140,
+ 1429, 1140,
+ 1430, 1140,
+ 1431, 1140,
+ 1432, 1140,
+ 1433, 1140,
+ 1434, 1140,
+ 1435, 1140,
+ 1436, 1140,
+ 1437, 1140,
+ 1438, 1140,
+ 1439, 1140,
+ 1440, 1140,
+ 1441, 1140,
+ 1442, 1140,
+ 1443, 1140,
+ 1444, 1140,
+ 1445, 1140,
+ 1446, 1140,
+ 1447, 1566,
+ 1463, 664,
+ 1472, 664,
+ 1474, 664,
+ 1476, 664,
+ 1482, 445,
+ 1501, 918,
+ 1502, 918,
+ 1507, 918,
+ 1511, 156,
+ 1512, 156,
+ 1513, 156,
+ 1514, 156,
+ 1522, 445,
+ 1533, 1566,
+ 1537, 1140,
+ 1572, 664,
+ 1601, 1679,
+ 1610, 156,
+ 1623, 156,
+ 1624, 156,
+ 1633, 1704,
+ 1645, 1357,
+ 1655, 83,
+ 1659, 83,
+ 1692, 918,
+ 1721, 83,
+ 1729, 83,
+ 1730, 83,
+ 1733, 83,
+ 1738, 83,
+ 1741, 83,
+ 1776, 445,
+ 1782, 83,
+ 1789, 83,
+ 1794, 83,
+ 1799, 83,
+ 1817, 918,
+ 1883, 1140
+};
+static int parser_goto_row219[] = {
+ 78,
+ -1, 164,
+ 0, 21,
+ 3, 24,
+ 5, 21,
+ 18, 21,
+ 19, 21,
+ 20, 24,
+ 22, 107,
+ 25, 108,
+ 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,
+ 165, 337,
+ 243, 24,
+ 265, 24,
+ 271, 24,
+ 274, 24,
+ 331, 24,
+ 386, 24,
+ 546, 24,
+ 588, 24,
+ 742, 24,
+ 743, 24,
+ 798, 24,
+ 839, 24,
+ 888, 24,
+ 890, 24,
+ 892, 24,
+ 979, 24,
+ 990, 24,
+ 994, 21,
+ 1058, 24,
+ 1060, 24,
+ 1062, 24,
+ 1145, 24,
+ 1154, 24,
+ 1156, 24,
+ 1208, 24,
+ 1216, 24,
+ 1218, 24,
+ 1304, 24,
+ 1319, 24,
+ 1380, 24,
+ 1393, 24,
+ 1468, 24,
+ 1501, 24,
+ 1502, 24,
+ 1507, 24,
+ 1579, 24,
+ 1655, 24,
+ 1659, 24,
+ 1692, 24,
+ 1721, 24,
+ 1727, 24,
+ 1729, 24,
+ 1730, 24,
+ 1733, 24,
+ 1738, 24,
+ 1741, 24,
+ 1782, 24,
+ 1785, 24,
+ 1789, 24,
+ 1791, 24,
+ 1794, 24,
+ 1799, 24,
+ 1817, 24,
+ 1836, 24
+};
+static int parser_goto_row220[] = {
+ 75,
+ -1, 165,
+ 0, 22,
+ 3, 25,
+ 5, 22,
+ 18, 22,
+ 19, 22,
+ 20, 25,
+ 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,
+ 386, 25,
+ 546, 25,
+ 588, 25,
+ 742, 25,
+ 743, 25,
+ 798, 25,
+ 839, 25,
+ 888, 25,
+ 890, 25,
+ 892, 25,
+ 979, 25,
+ 990, 25,
+ 994, 22,
+ 1058, 25,
+ 1060, 25,
+ 1062, 25,
+ 1145, 25,
+ 1154, 25,
+ 1156, 25,
+ 1208, 25,
+ 1216, 25,
+ 1218, 25,
+ 1304, 25,
+ 1319, 25,
+ 1380, 25,
+ 1393, 25,
+ 1468, 25,
+ 1501, 25,
+ 1502, 25,
+ 1507, 25,
+ 1579, 25,
+ 1655, 25,
+ 1659, 25,
+ 1692, 25,
+ 1721, 25,
+ 1727, 25,
+ 1729, 25,
+ 1730, 25,
+ 1733, 25,
+ 1738, 25,
+ 1741, 25,
+ 1782, 25,
+ 1785, 25,
+ 1789, 25,
+ 1791, 25,
+ 1794, 25,
+ 1799, 25,
+ 1817, 25,
+ 1836, 25
};
const int* const parser_goto_table[] = {
parser_goto_row198,
parser_goto_row199,
parser_goto_row200,
- parser_goto_row201
+ parser_goto_row201,
+ parser_goto_row202,
+ parser_goto_row203,
+ parser_goto_row204,
+ parser_goto_row205,
+ parser_goto_row206,
+ parser_goto_row207,
+ parser_goto_row208,
+ parser_goto_row209,
+ parser_goto_row210,
+ parser_goto_row211,
+ parser_goto_row212,
+ parser_goto_row213,
+ parser_goto_row214,
+ parser_goto_row215,
+ parser_goto_row216,
+ parser_goto_row217,
+ parser_goto_row218,
+ parser_goto_row219,
+ parser_goto_row220
};
android:label="@string/app_name"
android:hasCode="true"
android:debuggable="{{{not release}}}"
- {{{icon_declaration}}}
- android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation">
+ {{{icon_declaration}}}>
"""
for activity in project.activities do
n.accept_pretty_printer self
end
- # Visit a list of `Anode`.
+ # Visit a list of arguments `ANode` with optional parentheses
+ fun visit_args(n: nullable ANodes[ANode]) do
+ if n == null or n.is_empty then return
+ if current_token isa TOpar then
+ consume "("
+ else
+ adds
+ end
+
+ visit_list n
+ if current_token isa TCpar then consume ")"
+ end
+
+ # Visit a list of `ANode`.
fun visit_list(n: nullable ANodes[ANode]) do
if n == null then return
n.accept_pretty_printer self
# Is the node inlinable and can fit on the line.
fun can_inline(n: nullable ANode): Bool do
if n == null then return true
+ if no_inline and n.location.line_start != n.location.line_end then return false
if n.must_be_inline then return true
if n.must_be_block then return false
# check length
- if n.collect_length + current_length > max_size then return false
+ if max_size > 0 and n.collect_length + current_length > max_size then return false
# check block is inlinable
return n.is_inlinable
end
# Skip `current_token` until `target` is reached.
fun skip_to(target: nullable Token) do
if target == null then return
- while current_token != target do skip
+ while current_token != null and current_token != target do skip
+ if current_token == null then
+ target.debug("Looked for, but not found :(")
+ abort
+ end
+ end
+
+ # Consume comments and end of lines if any
+ fun consume_comments do
+ while current_token isa TEol or current_token isa TComment do visit current_token
end
# Visit `current_token`.
fun consume(token: String) do
- assert current_token.text == token
+ consume_comments
+ if current_token.text == token then else current_token.debug("Got `{current_token.text}`; expected `{token}`.")
visit current_token
end
var tab_size = 8
# Max line size.
- var max_size = 80
+ # 0 (or negative) to disable.
+ var max_size = 80 is writable
# Length of the current line.
var current_length = 0
# Do we force the deletion of empty lines?
var skip_empty = false is public writable
+
+ # Disable automatic inlining.
+ var no_inline = false is writable
end
# Base framework redefs
for e in self do
var e_can_inline = v.can_inline(e)
+ if v.current_token isa TComma then v.skip
+
if e != first then
if not e_can_inline then
v.add ","
v.adds
end
v.visit n_atid
- if not n_args.is_empty then
- if n_opar == null then
- v.adds
- else
- v.visit n_opar
- end
- v.visit_list n_args
- v.visit n_cpar
- end
+ v.visit_args n_args
end
end
v.adds
v.visit_list n_extern_calls
else
- v.addn
+ v.forcen
v.indent += 1
v.addt
v.indent -= 1
v.add "`\{"
if not lines.first.trim.is_empty then
- v.addn
+ v.forcen
lines.first.l_trim
v.indent += 1
v.addt
v.adds
else
v.visit n_expr
- v.addn
+ v.forcen
v.addt
end
end
end
- if has_else(v) then
- while not v.current_token isa TKwelse do
- v.consume v.current_token.text
- end
+ v.consume_comments
+
+ # FIXME: for some unknown reasons, has_else can be true even if
+ # there is no `else` keyword but a `end` instead.
+ if has_else(v) and v.current_token isa TKwelse then
v.indent -= 1
v.addt
v.visit_recv n_expr
if not n_expr isa AImplicitSelfExpr and not can_inline then
- v.addn
+ v.forcen
v.addt
end
v.visit n_args.n_exprs.first
if v.current_token isa TCpar then v.skip
else
- if v.current_token isa TOpar then
- v.consume "("
- else
- v.adds
- end
-
- v.visit_list n_args.n_exprs
- if v.current_token isa TCpar then v.consume ")"
+ v.visit_args n_args.n_exprs
end
end
end
end
v.visit n_kwinit
-
- if not n_args.n_exprs.is_empty then
- v.consume "("
- v.visit_list n_args.n_exprs
- v.consume ")"
- end
+ v.visit_args n_args.n_exprs
end
end
v.consume "."
if not can_inline then
- v.addn
+ v.forcen
v.indent += 1
v.addt
v.indent -= 1
v.visit n_id
end
- if not n_args.n_exprs.is_empty then
- v.consume "("
- v.visit_list n_args.n_exprs
- v.consume ")"
- end
+ v.visit_args n_args.n_exprs
end
redef fun is_inlinable do return true
else
v.addt
v.visit n_else
- v.addn
+ v.forcen
v.indent -= 1
v.addt
v.add "end"
v.visit n_args.n_exprs.first
if v.current_token isa TCpar then v.skip
else
- if v.current_token isa TOpar then
- v.consume "("
- else
- v.adds
- end
-
- v.visit_list n_args.n_exprs
- if v.current_token isa TCpar then v.consume ")"
+ v.visit_args n_args.n_exprs
end
end
end
v.adds
v.visit bin_expr2
else
- v.addn
+ v.forcen
v.indent += 1
v.addt
v.indent -= 1
# Syntax
-redef class AUplusExpr
+redef class AUnaryopExpr
redef fun accept_pretty_printer(v) do
- v.consume "+"
- v.visit n_expr
- end
-end
-
-redef class AUminusExpr
- redef fun accept_pretty_printer(v) do
- v.consume "-"
+ v.visit n_op
v.visit n_expr
end
end
redef fun accept_pretty_printer(v) do
v.consume "["
v.visit_list n_exprs
+ if n_type != null then
+ v.consume ":"
+ v.adds
+ v.visit n_type
+ end
v.consume "]"
end
end
while i < text.length do
v.add text[i].to_s
- if v.current_length >= v.max_size and i <= text.length - 3 then
+ if v.max_size > 0 and v.current_length >= v.max_size and i <= text.length - 3 then
v.add "\" +"
if was_inline then
v.forcen
var map = new SignatureMap
var setted = args.length - msignature.min_arity
+
+ # First, handle named arguments
+ for i in [0..args.length[ do
+ var e = args[i]
+ if not e isa ANamedargExpr then continue
+ var name = e.n_id.text
+ var param = msignature.mparameter_by_name(name)
+ if param == null then
+ modelbuilder.error(e.n_id, "Error: no parameter `{name}` for `{mproperty}{msignature}`.")
+ return null
+ end
+ if not param.is_default then
+ modelbuilder.error(e, "Error: parameter `{name}` is not optional for `{mproperty}{msignature}`.")
+ return null
+ end
+ var idx = msignature.mparameters.index_of(param)
+ var prev = map.map.get_or_null(idx)
+ if prev != null then
+ modelbuilder.error(e, "Error: parameter `{name}` already associated with argument #{prev} for `{mproperty}{msignature}`.")
+ return null
+ end
+ map.map[idx] = i
+ setted -= 1
+ e.mtype = self.visit_expr_subtype(e.n_expr, param.mtype)
+ end
+
+ # Second, associate remaining parameters
var vararg_decl = args.length - msignature.arity
var j = 0
for i in [0..msignature.arity[ do
+ # Skip parameters associated by name
+ if map.map.has_key(i) then continue
+
var param = msignature.mparameters[i]
if param.is_default then
if setted > 0 then
continue
end
end
+
+ # Search the next free argument: skip named arguments since they are already associated
+ while args[j] isa ANamedargExpr do j += 1
var arg = args[j]
map.map[i] = j
j += 1
var paramtype = param.mtype
self.visit_expr_subtype(arg, paramtype)
end
+
+ # Third, check varargs
if vararg_rank >= 0 then
var paramtype = msignature.mparameters[vararg_rank].mtype
var first = args[vararg_rank]
- if vararg_decl == 0 and first isa AVarargExpr then
+ if vararg_decl == 0 then
var mclass = get_mclass(node, "Array")
if mclass == null then return null # Forward error
var array_mtype = mclass.get_mtype([paramtype])
- self.visit_expr_subtype(first.n_expr, array_mtype)
- first.mtype = first.n_expr.mtype
+ if first isa AVarargExpr then
+ self.visit_expr_subtype(first.n_expr, array_mtype)
+ first.mtype = first.n_expr.mtype
+ else
+ # only one vararg, maybe `...` was forgot, so be gentle!
+ var t = visit_expr(first)
+ if t == null then return null # Forward error
+ if not is_subtype(t, paramtype) and is_subtype(t, array_mtype) then
+ # Not acceptable but could be a `...`
+ error(first, "Type Error: expected `{paramtype}`, got `{t}`. Is an ellipsis `...` missing on the argument?")
+ return null
+ end
+ # Standard valid vararg, finish the job
+ map.vararg_decl = 1
+ self.visit_expr_subtype(first, paramtype)
+ end
else
map.vararg_decl = vararg_decl + 1
for i in [vararg_rank..vararg_rank+vararg_decl] do
end
end
-redef class AUplusExpr
- redef fun property_name do return "unary +"
- redef fun compute_raw_arguments do return new Array[AExpr]
-end
-
-redef class AUminusExpr
- redef fun property_name do return "unary -"
+redef class AUnaryopExpr
+ redef fun property_name do return "unary {operator}"
redef fun compute_raw_arguments do return new Array[AExpr]
end
var transform_phase: Phase = new TransformPhase(self, [typing_phase, auto_super_init_phase])
# --no-shortcut-range
- var opt_no_shortcut_range: OptionBool = new OptionBool("Always insantiate a range and its iterator on 'for' loops", "--no-shortcut-range")
+ var opt_no_shortcut_range: OptionBool = new OptionBool("Always instantiate a range and its iterator on 'for' loops", "--no-shortcut-range")
redef init
do
--- /dev/null
+# 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 base_arg_default
+
+var a = new A
+a.foo(a=1,b=2,3,4,e=5,f=6)
+a.foo(f=6,3,e=5,b=2,4,a=1)
+a.foo(3,e=5,b=2,4)
+
+a.bar
+
+a.bar(a=1)
+a.bar(2,a=1)
+a.bar(2,a=1,3)
+a.bar(b=2)
+a.bar(1,b=2)
+a.bar(1,b=2,3)
+a.bar(c=3)
+a.bar(1,c=3)
+a.bar(1,c=3,2)
+
+a.bar(a=1,b=2)
+a.bar(a=1,3,b=2)
+a.bar(a=1,c=3)
+a.bar(a=1,2,c=3)
+a.bar(b=2,c=3)
+a.bar(b=2,1,c=3)
+
+a.bar(b=2,a=1,c=3)
+
+#alt1#a.bar(2,a=1,3, 4)
+#alt1#a.bar(fail=1)
+#alt1#a.bar(a=1,a=1)
+#alt1#a.foo(c=1,d=1)
--- /dev/null
+# 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 base_arg_default
+
+class B
+ super A
+ redef fun foo(x,y,z,t,u,v) do super
+end
+
+#alt2#redef class A
+#alt2# redef fun foo(x,y,z,t,u,v) do super
+#alt2#end
+
+var a = new A #alt1# var a = new B
+a.foo(a=1,b=2,3,4,e=5,f=6)
+a.foo(f=6,3,e=5,b=2,4,a=1)
+a.foo(3,e=5,b=2,4)
+
+var b = new B #alt1# var b = new A
+b.foo(x=1,y=2,3,4,u=5,v=6)
+b.foo(v=6,3,u=5,y=2,4,x=1)
+b.foo(3,u=5,y=2,4)
--- /dev/null
+# 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 base_arg_default
+import standard::collection::array
+
+fun order(i: Int): Int do
+ '>'.output
+ i.output
+ return i
+end
+
+fun bar(a: Int, bs: Int..., c: Int)
+do
+ a.output
+ for b in bs do
+ ' '.output
+ b.output
+ end
+ c.output
+end
+
+var a = new A
+a.foo(order(1),order(2),order(3),order(4),order(5),order(6))
+a.foo(a=order(1),b=order(2),order(3),order(4),e=order(5),f=order(6))
+a.foo(f=order(6),order(3),e=order(5),b=order(2),order(4),a=order(1))
+a.foo(order(3),e=order(5),b=order(2),order(4))
+a.foo(order(3),order(4))
+
+bar(order(1),order(2),order(3))
+bar(order(1),order(2),order(3),order(4))
--- /dev/null
+# 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 standard::kernel
+
+abstract class A
+ var x: Int
+ var y: Int is abstract
+end
+
+class B
+ super A
+ redef fun y=(v) do v.output
+end
+
+var b = new B(1,2)
+b.x.output
# This file is part of NIT ( http://www.nitlanguage.org ).
#
-# Copyright 2004-2008 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
# See the License for the specific language governing permissions and
# limitations under the License.
+import standard::kernel
class A
+ fun +: A
+ do
+ 0.output
+ return self
+ end
fun +(a: A): A
do
2.output
15.output
return a
end
+ fun **(a: A): A
+ do
+ 16.output
+ return a
+ end
+ fun |(a: A): A
+ do
+ 16.output
+ return a
+ end
+ fun ^(a: A): A
+ do
+ 17.output
+ return a
+ end
+ fun &(a: A): A
+ do
+ 18.output
+ return a
+ end
+ fun ~: A
+ do
+ 19.output
+ return self
+ end
init do end
end
var a2 = new A
var b : Bool
var i: Int
-a = a + -a - a * a / a % a >> a << a
+
+a = +a + -a - a * a / a % a >> a << a ** a | ~a ^ a & a
b = a == a2 and a < a and a > a and a <= a and a >= a
i = a <=> a
+
+'\n'.output
+
+a += a
+a -= a
+a *= a
+a /= a
+a %= a
+a **= a
+a <<= a
+a >>= a
+a |= a
+a ^= a
+a &= a
--- /dev/null
+# 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 standard::kernel
+
+
+redef class Int
+ fun foo do self.output
+end
+
+fun bar(i: nullable Int) do i.foo
+
+redef class Float
+ fun foo do self.output
+end
+
+fun baz(i: nullable Float) do i.foo
+
+bar(1)
+baz(1.0)
+
+var a: nullable Object
+
+a = 1
+a.foo
+
+a = 1.0
+a.foo
-&
\ No newline at end of file
+`&
websocket_server
converter
show_basedir
+langannot
--- /dev/null
+][[]][ is not well-balanced
+[[]][] is well-balanced
+[]][][ is not well-balanced
+[[[]]] is well-balanced
+[][]][ is not well-balanced
+]][[][ is not well-balanced
+[]]][[ is not well-balanced
+[]][][ is not well-balanced
+[][][] is well-balanced
+][]][[ is not well-balanced
--- /dev/null
+1
+2
+3
+4
+5
+6
+-
+1
+2
+3
+4
+5
+6
+-
+
+2
+3
+4
+5
+
+-
+
+
+
+-
+1
+
+
+-
+1
+2
+
+-
+1
+2
+3
+-
+
+2
+
+-
+1
+2
+
+-
+1
+2
+3
+-
+
+
+3
+-
+1
+
+3
+-
+1
+2
+3
+-
+1
+2
+
+-
+1
+2
+3
+-
+1
+
+3
+-
+1
+2
+3
+-
+
+2
+3
+-
+1
+2
+3
+-
+1
+2
+3
+-
--- /dev/null
+alt/base_arg_named_alt1.nit:43,3--5: Error: expected at most 3 argument(s) for `bar(a: nullable Int, b: nullable Int, c: nullable Int)`; got 4. See introduction at `base_arg_default::A::bar`.
+alt/base_arg_named_alt1.nit:44,7--10: Error: no parameter `fail` for `bar(a: nullable Int, b: nullable Int, c: nullable Int)`.
+alt/base_arg_named_alt1.nit:45,11--13: Error: parameter `a` already associated with argument #0 for `bar(a: nullable Int, b: nullable Int, c: nullable Int)`.
+alt/base_arg_named_alt1.nit:46,7--9: Error: parameter `c` is not optional for `foo(a: nullable Int, b: nullable Int, c: Int, d: Int, e: nullable Int, f: nullable Int)`.
--- /dev/null
+1
+2
+3
+4
+5
+6
+-
+1
+2
+3
+4
+5
+6
+-
+
+2
+3
+4
+5
+
+-
+1
+2
+3
+4
+5
+6
+-
+1
+2
+3
+4
+5
+6
+-
+
+2
+3
+4
+5
+
+-
--- /dev/null
+alt/base_arg_named_inherit_alt1.nit:27,7: Error: no parameter `a` for `foo(x: nullable Int, y: nullable Int, z: Int, t: Int, u: nullable Int, v: nullable Int)`.
+alt/base_arg_named_inherit_alt1.nit:28,7: Error: no parameter `f` for `foo(x: nullable Int, y: nullable Int, z: Int, t: Int, u: nullable Int, v: nullable Int)`.
+alt/base_arg_named_inherit_alt1.nit:29,9: Error: no parameter `e` for `foo(x: nullable Int, y: nullable Int, z: Int, t: Int, u: nullable Int, v: nullable Int)`.
+alt/base_arg_named_inherit_alt1.nit:32,7: Error: no parameter `x` for `foo(a: nullable Int, b: nullable Int, c: Int, d: Int, e: nullable Int, f: nullable Int)`.
+alt/base_arg_named_inherit_alt1.nit:33,7: Error: no parameter `v` for `foo(a: nullable Int, b: nullable Int, c: Int, d: Int, e: nullable Int, f: nullable Int)`.
+alt/base_arg_named_inherit_alt1.nit:34,9: Error: no parameter `u` for `foo(a: nullable Int, b: nullable Int, c: Int, d: Int, e: nullable Int, f: nullable Int)`.
--- /dev/null
+alt/base_arg_named_inherit_alt2.nit:27,7: Error: no parameter `a` for `foo(x: nullable Int, y: nullable Int, z: Int, t: Int, u: nullable Int, v: nullable Int)`.
+alt/base_arg_named_inherit_alt2.nit:28,7: Error: no parameter `f` for `foo(x: nullable Int, y: nullable Int, z: Int, t: Int, u: nullable Int, v: nullable Int)`.
+alt/base_arg_named_inherit_alt2.nit:29,9: Error: no parameter `e` for `foo(x: nullable Int, y: nullable Int, z: Int, t: Int, u: nullable Int, v: nullable Int)`.
--- /dev/null
+>1
+>2
+>3
+>4
+>5
+>6
+1
+2
+3
+4
+5
+6
+-
+>1
+>2
+>3
+>4
+>5
+>6
+1
+2
+3
+4
+5
+6
+-
+>6
+>3
+>5
+>2
+>4
+>1
+1
+2
+3
+4
+5
+6
+-
+>3
+>5
+>2
+>4
+
+2
+3
+4
+5
+
+-
+>3
+>4
+
+
+3
+4
+
+
+-
+>1
+>2
+>3
+1
+ 2
+3
+>1
+>2
+>3
+>4
+1
+ 2
+ 3
+4
base_formal_subtype.nit:59,10--18: Warning: expression is already a `E` since it is a `VVE`.
base_formal_subtype.nit:60,10--23: Warning: expression is already a `Object` since it is a `VVE`.
base_formal_subtype.nit:62,10--20: Warning: expression is already a `VGE`.
-base_formal_subtype.nit:63,10--20: Warning: expression is already a `G[E]` since it is a `VGE`.
-base_formal_subtype.nit:64,10--25: Warning: expression is already a `G[Object]` since it is a `VGE`.
+base_formal_subtype.nit:63,10--21: Warning: expression is already a `G[E]` since it is a `VGE`.
+base_formal_subtype.nit:64,10--26: Warning: expression is already a `G[Object]` since it is a `VGE`.
base_formal_subtype.nit:65,10--23: Warning: expression is already a `Object` since it is a `VGE`.
base_formal_subtype.nit:67,10--22: Warning: expression is already a `VVGE`.
base_formal_subtype.nit:68,10--21: Warning: expression is already a `VGE` since it is a `VVGE`.
-base_formal_subtype.nit:69,10--21: Warning: expression is already a `G[E]` since it is a `VVGE`.
-base_formal_subtype.nit:70,10--26: Warning: expression is already a `G[Object]` since it is a `VVGE`.
+base_formal_subtype.nit:69,10--22: Warning: expression is already a `G[E]` since it is a `VVGE`.
+base_formal_subtype.nit:70,10--27: Warning: expression is already a `G[Object]` since it is a `VVGE`.
base_formal_subtype.nit:71,10--24: Warning: expression is already a `Object` since it is a `VVGE`.
base_formal_subtype.nit:73,10--22: Warning: expression is already a `VGVE`.
-base_formal_subtype.nit:74,10--22: Warning: expression is already a `G[VE]` since it is a `VGVE`.
-base_formal_subtype.nit:75,10--21: Warning: expression is already a `G[E]` since it is a `VGVE`.
-base_formal_subtype.nit:76,10--26: Warning: expression is already a `G[Object]` since it is a `VGVE`.
+base_formal_subtype.nit:74,10--23: Warning: expression is already a `G[VE]` since it is a `VGVE`.
+base_formal_subtype.nit:75,10--22: Warning: expression is already a `G[E]` since it is a `VGVE`.
+base_formal_subtype.nit:76,10--27: Warning: expression is already a `G[Object]` since it is a `VGVE`.
base_formal_subtype.nit:77,10--24: Warning: expression is already a `Object` since it is a `VGVE`.
base_formal_subtype.nit:79,10--24: Warning: expression is already a `VGVVE`.
-base_formal_subtype.nit:80,10--24: Warning: expression is already a `G[VVE]` since it is a `VGVVE`.
-base_formal_subtype.nit:81,10--23: Warning: expression is already a `G[VE]` since it is a `VGVVE`.
-base_formal_subtype.nit:82,10--22: Warning: expression is already a `G[E]` since it is a `VGVVE`.
-base_formal_subtype.nit:83,10--27: Warning: expression is already a `G[Object]` since it is a `VGVVE`.
+base_formal_subtype.nit:80,10--25: Warning: expression is already a `G[VVE]` since it is a `VGVVE`.
+base_formal_subtype.nit:81,10--24: Warning: expression is already a `G[VE]` since it is a `VGVVE`.
+base_formal_subtype.nit:82,10--23: Warning: expression is already a `G[E]` since it is a `VGVVE`.
+base_formal_subtype.nit:83,10--28: Warning: expression is already a `G[Object]` since it is a `VGVVE`.
base_formal_subtype.nit:84,10--25: Warning: expression is already a `Object` since it is a `VGVVE`.
-alt/base_gen2_alt1.nit:61,13--17: Type Error: `A` is not a generic class.
+alt/base_gen2_alt1.nit:61,13--18: Type Error: `A` is not a generic class.
-alt/base_gen2_alt3.nit:63,13--22: Type Error: expected 1 formal argument(s) for `B[E: nullable Object]`; got 2.
+alt/base_gen2_alt3.nit:63,13--23: Type Error: expected 1 formal argument(s) for `B[E: nullable Object]`; got 2.
-alt/base_gen2_alt5.nit:65,13--17: Type Error: expected 2 formal argument(s) for `C[F: nullable Object, G: nullable Object]`; got 1.
+alt/base_gen2_alt5.nit:65,13--18: Type Error: expected 2 formal argument(s) for `C[F: nullable Object, G: nullable Object]`; got 1.
base_isa_gen1.nit:62,8--14: Warning: expression is already a `A` since it is a `F`.
-base_isa_gen1.nit:65,8--29: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
-base_isa_gen1.nit:66,8--29: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
+base_isa_gen1.nit:65,8--30: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
+base_isa_gen1.nit:66,8--30: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
true
-base_isa_gen2.nit:39,8--21: Warning: expression is already a `A[Object]`.
-base_isa_gen2.nit:41,8--21: Warning: expression is already a `A[Object]` since it is a `B[Object]`.
-base_isa_gen2.nit:44,8--21: Warning: expression is already a `A[Object]` since it is a `C[Object]`.
-base_isa_gen2.nit:48,8--21: Warning: expression is already a `A[Object]` since it is a `D[Object, Object]`.
+base_isa_gen2.nit:39,8--22: Warning: expression is already a `A[Object]`.
+base_isa_gen2.nit:41,8--22: Warning: expression is already a `A[Object]` since it is a `B[Object]`.
+base_isa_gen2.nit:44,8--22: Warning: expression is already a `A[Object]` since it is a `C[Object]`.
+base_isa_gen2.nit:48,8--22: Warning: expression is already a `A[Object]` since it is a `D[Object, Object]`.
true
base_isa_gen4.nit:34,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen4.nit:36,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen4.nit:40,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen4.nit:42,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen4.nit:36,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen4.nit:40,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen4.nit:42,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
true
base_isa_gen5.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen5.nit:41,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen5.nit:46,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen5.nit:48,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen5.nit:41,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen5.nit:46,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen5.nit:48,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
true
-base_isa_gen8.nit:49,8--17: Warning: expression is already a `A[X]`.
-base_isa_gen8.nit:50,8--17: Warning: expression is already a `A[Y]`.
-base_isa_gen8.nit:51,8--17: Warning: expression is already a `A[Z]`.
-base_isa_gen8.nit:53,8--21: Warning: expression is already a `B[Object]` since it is a `B[X]`.
-base_isa_gen8.nit:55,8--21: Warning: expression is already a `C[X, X]`.
-base_isa_gen8.nit:56,8--21: Warning: expression is already a `C[X, Y]`.
-base_isa_gen8.nit:57,8--21: Warning: expression is already a `C[X, Z]`.
-base_isa_gen8.nit:59,8--22: Warning: expression is already a `D[X, Y, Z]`.
-base_isa_gen8.nit:60,8--28: Warning: expression is already a `E[X, Y, Z, Bool]`.
+base_isa_gen8.nit:49,8--18: Warning: expression is already a `A[X]`.
+base_isa_gen8.nit:50,8--18: Warning: expression is already a `A[Y]`.
+base_isa_gen8.nit:51,8--18: Warning: expression is already a `A[Z]`.
+base_isa_gen8.nit:53,8--22: Warning: expression is already a `B[Object]` since it is a `B[X]`.
+base_isa_gen8.nit:55,8--22: Warning: expression is already a `C[X, X]`.
+base_isa_gen8.nit:56,8--22: Warning: expression is already a `C[X, Y]`.
+base_isa_gen8.nit:57,8--22: Warning: expression is already a `C[X, Z]`.
+base_isa_gen8.nit:59,8--23: Warning: expression is already a `D[X, Y, Z]`.
+base_isa_gen8.nit:60,8--29: Warning: expression is already a `E[X, Y, Z, Bool]`.
true
base_isa_nullable1.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Integer]`.
-base_isa_nullable1.nit:41,8--24: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
-base_isa_nullable1.nit:46,8--25: Warning: expression is already a `B[B[Integer]]`.
-base_isa_nullable1.nit:48,8--26: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
-base_isa_nullable1.nit:50,8--33: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
+base_isa_nullable1.nit:41,8--25: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
+base_isa_nullable1.nit:46,8--27: Warning: expression is already a `B[B[Integer]]`.
+base_isa_nullable1.nit:48,8--28: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
+base_isa_nullable1.nit:50,8--34: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
true
base_isa_nullable2.nit:27,8--23: Warning: expression is already a `nullable A` since it is a `A`.
-base_isa_nullable2.nit:29,8--30: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
-base_isa_nullable2.nit:30,8--39: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
-base_isa_nullable2.nit:33,8--30: Warning: expression is already a `C[nullable Object]`.
+base_isa_nullable2.nit:29,8--31: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
+base_isa_nullable2.nit:30,8--40: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
+base_isa_nullable2.nit:33,8--31: Warning: expression is already a `C[nullable Object]`.
true
-base_isa_vt_gen1.nit:30,10--34: Warning: expression is already a `Triple[T, U, V]`.
-base_isa_vt_gen1.nit:54,8--52: Warning: expression is already a `Triple[String, Int, nullable Object]`.
-base_isa_vt_gen1.nit:57,8--46: Warning: expression is already a `Triple[String, String, String]`.
-base_isa_vt_gen1.nit:60,8--48: Warning: expression is already a `Triple[String, String, B[String]]`.
-base_isa_vt_gen1.nit:63,8--46: Warning: expression is already a `Triple[String, String, String]`.
+base_isa_vt_gen1.nit:30,10--35: Warning: expression is already a `Triple[T, U, V]`.
+base_isa_vt_gen1.nit:54,8--53: Warning: expression is already a `Triple[String, Int, nullable Object]`.
+base_isa_vt_gen1.nit:57,8--47: Warning: expression is already a `Triple[String, String, String]`.
+base_isa_vt_gen1.nit:60,8--50: Warning: expression is already a `Triple[String, String, B[String]]`.
+base_isa_vt_gen1.nit:63,8--47: Warning: expression is already a `Triple[String, String, String]`.
true
--- /dev/null
+0
+1
+2
+3
+4
+5
+6
+15
+16
+14
+19
+18
+17
+16
+7
+9
+10
+11
+12
+13
+
+2
+6
+3
+4
+5
+16
+14
+15
+16
+17
+18
--- /dev/null
+1
+1.000000
+1
+1.000000
-alt/base_vararg3_alt1.nit:41,7--13: Type Error: expected `Int`, got `Array[Int]`.
+alt/base_vararg3_alt1.nit:41,7--13: Type Error: expected `Int`, got `Array[Int]`. Is an ellipsis `...` missing on the argument?
-alt/base_vararg3_alt3.nit:33,9: Type Error: expected `Int`, got `Array[Int]`.
+alt/base_vararg3_alt3.nit:33,9: Type Error: expected `Int`, got `Array[Int]`. Is an ellipsis `...` missing on the argument?
-error_formal.nit:18,9--13: Type Error: formal type `T` cannot have formal parameters.
+error_formal.nit:18,9--14: Type Error: formal type `T` cannot have formal parameters.
-alt/error_needed_method_alt2.nit:47,10--27: Type Error: cannot instantiate interface `Collection[Int]`.
+alt/error_needed_method_alt2.nit:47,10--28: Type Error: cannot instantiate interface `Collection[Int]`.
error_operators.nit:47,11: Syntax Error: binary operator `<=>` requires exactly one parameter; got 0.
error_operators.nit:48,10: Syntax Error: binary operator `<<` requires exactly one parameter; got 0.
error_operators.nit:49,10: Syntax Error: binary operator `>>` requires exactly one parameter; got 0.
-error_operators.nit:50,14: Syntax Error: `foo=` requires at least 1 parameter(s); got 0.
+error_operators.nit:50,11: Syntax Error: `foo=` requires at least 1 parameter(s); got 0.
error_operators.nit:51,10: Syntax Error: `[]` requires at least 1 parameter(s); got 0.
error_operators.nit:52,9--14: Syntax Error: `[]=` requires at least 2 parameter(s); got 1.
error_operators.nit:57,7--18: Syntax Error: binary operator `+` requires exactly one parameter; got 3.
-alt/error_redef_1alt2_alt1.nit:26,18: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt1::A::f1`.
+alt/error_redef_1alt2_alt1.nit:26,15: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt1::A::f1`.
-alt/error_redef_1alt2_alt4.nit:29,18: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt4::A::f1`.
+alt/error_redef_1alt2_alt4.nit:29,15: Redef Error: expected 1 parameter(s) for `f1(i: Int)`; got 0. See introduction at `error_redef_1alt2_alt4::A::f1`.
-alt/error_redef_1alt4_alt1.nit:26,18: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt1::A::f1`.
+alt/error_redef_1alt4_alt1.nit:26,15: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt1::A::f1`.
-alt/error_redef_1alt4_alt4.nit:29,18: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt4::A::f1`.
+alt/error_redef_1alt4_alt4.nit:29,15: Redef Error: expected 1 parameter(s) for `f1(i: Int): Int`; got 0. See introduction at `error_redef_1alt4_alt4::A::f1`.
-error_syntax2.nit:1,1: Syntax Error: unknown token `&`.
+error_syntax2.nit:1,1: Syntax Error: unknown token ``&`.
alt/error_type_unk_alt2.nit:9,8--11: Error: class `Fail` not found in module `error_type_unk_alt2`.
-alt/error_type_unk_alt2.nit:11,8--13: Error: class `Fail` not found in module `error_type_unk_alt2`.
+alt/error_type_unk_alt2.nit:11,8--14: Error: class `Fail` not found in module `error_type_unk_alt2`.
-error_virtual_type2.nit:40,17--26: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
+error_virtual_type2.nit:40,17--27: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
-alt/error_virtual_type2_alt1.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> T <-> T.
+alt/error_virtual_type2_alt1.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> T <-> T.
alt/error_virtual_type2_alt1.nit:25,2--10: Error: circularity of virtual type definition: T <-> T.
alt/error_virtual_type2_alt1.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt1.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt1.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt1.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt2.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> T <-> nullable T.
+alt/error_virtual_type2_alt2.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> T <-> nullable T.
alt/error_virtual_type2_alt2.nit:25,2--26,19: Error: circularity of virtual type definition: T <-> nullable T.
alt/error_virtual_type2_alt2.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt2.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt2.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt2.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt3.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> G[T] <-> T.
-alt/error_virtual_type2_alt3.nit:25,2--27,12: Error: circularity of virtual type definition: T <-> G[T].
+alt/error_virtual_type2_alt3.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> G[T] <-> T.
+alt/error_virtual_type2_alt3.nit:25,2--27,13: Error: circularity of virtual type definition: T <-> G[T].
alt/error_virtual_type2_alt3.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt3.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt3.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt3.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
alt/error_virtual_type2_alt4.nit:29,10--13: Error: class `FAIL` not found in module `error_virtual_type2_alt4`.
alt/error_virtual_type2_alt4.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt4.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt4.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt4.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt5.nit:22,2--24,13: Error: circularity of virtual type definition: GT -> T <-> U.
+alt/error_virtual_type2_alt5.nit:22,2--24,14: Error: circularity of virtual type definition: GT -> T <-> U.
alt/error_virtual_type2_alt5.nit:25,2--30,10: Error: circularity of virtual type definition: T <-> U.
alt/error_virtual_type2_alt5.nit:38,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt5.nit:40,17--26: Redef Error: expected `null` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt5.nit:40,17--27: Redef Error: expected `null` bound type; got `G[Discrete]`.
alt/error_virtual_type2_alt5.nit:42,23: Redef Error: expected `Comparable` for return type; got `T`.
-alt/error_virtual_type2_alt6.nit:40,17--26: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
-alt/error_virtual_type2_alt6.nit:41,2--22: Error: a property `GT` is already defined in class `B` at line 39.
+alt/error_virtual_type2_alt6.nit:40,17--27: Redef Error: expected `G[T]` bound type; got `G[Discrete]`.
+alt/error_virtual_type2_alt6.nit:41,2--23: Error: a property `GT` is already defined in class `B` at line 39.
alt/error_virtual_type_alt3.nit:25,12: Type Error: expected `Object`, got `T`.
-alt/error_virtual_type_alt3.nit:22,2--25,12: Error: circularity of virtual type definition: T <-> G[T].
+alt/error_virtual_type_alt3.nit:22,2--25,13: Error: circularity of virtual type definition: T <-> G[T].
base_isa_gen1.nit:62,8--14: Warning: expression is already a `A` since it is a `F`.
-base_isa_gen1.nit:65,8--29: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
-base_isa_gen1.nit:66,8--29: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
+base_isa_gen1.nit:65,8--30: Warning: expression is already a `D[Object, Object]` since it is a `G[Object]`.
+base_isa_gen1.nit:66,8--30: Warning: expression is already a `D[Object, Object]` since it is a `E[F]`.
Runtime error: Assert failed (base_isa_gen1.nit:68)
base_isa_gen4.nit:34,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen4.nit:36,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen4.nit:40,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen4.nit:42,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen4.nit:36,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen4.nit:40,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen4.nit:42,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
Runtime error: Assert failed (base_isa_gen4.nit:37)
base_isa_gen5.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Canard]`.
-base_isa_gen5.nit:41,8--22: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
-base_isa_gen5.nit:46,8--24: Warning: expression is already a `B[B[Canard]]`.
-base_isa_gen5.nit:48,8--24: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
+base_isa_gen5.nit:41,8--23: Warning: expression is already a `B[Animal]` since it is a `B[Canard]`.
+base_isa_gen5.nit:46,8--26: Warning: expression is already a `B[B[Canard]]`.
+base_isa_gen5.nit:48,8--26: Warning: expression is already a `B[B[Animal]]` since it is a `B[B[Canard]]`.
Runtime error: Assert failed (base_isa_gen5.nit:42)
base_isa_nullable1.nit:39,8--15: Warning: expression is already a `A` since it is a `B[Integer]`.
-base_isa_nullable1.nit:41,8--24: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
-base_isa_nullable1.nit:46,8--25: Warning: expression is already a `B[B[Integer]]`.
-base_isa_nullable1.nit:48,8--26: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
-base_isa_nullable1.nit:50,8--33: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
+base_isa_nullable1.nit:41,8--25: Warning: expression is already a `B[Discrete]` since it is a `B[Integer]`.
+base_isa_nullable1.nit:46,8--27: Warning: expression is already a `B[B[Integer]]`.
+base_isa_nullable1.nit:48,8--28: Warning: expression is already a `B[B[Discrete]]` since it is a `B[B[Integer]]`.
+base_isa_nullable1.nit:50,8--34: Warning: expression is already a `B[nullable Discrete]` since it is a `B[Discrete]`.
Runtime error: Assert failed (base_isa_nullable1.nit:42)
base_isa_nullable2.nit:27,8--23: Warning: expression is already a `nullable A` since it is a `A`.
-base_isa_nullable2.nit:29,8--30: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
-base_isa_nullable2.nit:30,8--39: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
-base_isa_nullable2.nit:33,8--30: Warning: expression is already a `C[nullable Object]`.
+base_isa_nullable2.nit:29,8--31: Warning: expression is already a `nullable B[Object]` since it is a `B[Object]`.
+base_isa_nullable2.nit:30,8--40: Warning: expression is already a `nullable B[nullable Object]` since it is a `nullable B[Object]`.
+base_isa_nullable2.nit:33,8--31: Warning: expression is already a `C[nullable Object]`.
Runtime error: Assert failed (base_isa_nullable2.nit:32)
<=8: sub-population=1 (14.28%); cumulated value=6 (100.00%)
--- AST Metrics ---
## All nodes of the AST
- population: 48
+ population: 50
minimum value: 1
maximum value: 40
- total value: 261
- average value: 5.43
+ total value: 270
+ average value: 5.40
distribution:
- <=1: sub-population=15 (31.25%); cumulated value=15 (5.74%)
- <=2: sub-population=5 (10.41%); cumulated value=10 (3.83%)
- <=4: sub-population=10 (20.83%); cumulated value=32 (12.26%)
- <=8: sub-population=10 (20.83%); cumulated value=64 (24.52%)
- <=16: sub-population=4 (8.33%); cumulated value=44 (16.85%)
- <=32: sub-population=3 (6.25%); cumulated value=56 (21.45%)
- <=64: sub-population=1 (2.08%); cumulated value=40 (15.32%)
+ <=1: sub-population=16 (32.00%); cumulated value=16 (5.92%)
+ <=2: sub-population=5 (10.00%); cumulated value=10 (3.70%)
+ <=4: sub-population=9 (18.00%); cumulated value=28 (10.37%)
+ <=8: sub-population=12 (24.00%); cumulated value=76 (28.14%)
+ <=16: sub-population=4 (8.00%); cumulated value=44 (16.29%)
+ <=32: sub-population=3 (6.00%); cumulated value=56 (20.74%)
+ <=64: sub-population=1 (2.00%); cumulated value=40 (14.81%)
list:
- TId: 40 (15.32%)
- APublicVisibility: 19 (7.27%)
- AListExprs: 19 (7.27%)
- ACallExpr: 18 (6.89%)
- TClassid: 15 (5.74%)
- TNumber: 10 (3.83%)
- ADecIntExpr: 10 (3.83%)
- AType: 9 (3.44%)
- TKwend: 8 (3.06%)
- ASignature: 8 (3.06%)
+ TId: 40 (14.81%)
+ APublicVisibility: 19 (7.03%)
+ AListExprs: 19 (7.03%)
+ ACallExpr: 18 (6.66%)
+ TClassid: 15 (5.55%)
+ TNumber: 10 (3.70%)
+ ADecIntExpr: 10 (3.70%)
+ AType: 9 (3.33%)
+ TKwend: 8 (2.96%)
+ ASignature: 8 (2.96%)
...
- ACallAssignExpr: 1 (0.38%)
- AAnnotations: 1 (0.38%)
- AReturnExpr: 1 (0.38%)
- TKwreturn: 1 (0.38%)
- AInterfaceClasskind: 1 (0.38%)
- TKwinterface: 1 (0.38%)
- ANoImport: 1 (0.38%)
- AMainMethPropdef: 1 (0.38%)
- AMainClassdef: 1 (0.38%)
- TKwimport: 1 (0.38%)
+ ASelfExpr: 1 (0.37%)
+ AAnnotations: 1 (0.37%)
+ ACallAssignExpr: 1 (0.37%)
+ TKwreturn: 1 (0.37%)
+ AInterfaceClasskind: 1 (0.37%)
+ TKwinterface: 1 (0.37%)
+ ANoImport: 1 (0.37%)
+ AMainMethPropdef: 1 (0.37%)
+ AMainClassdef: 1 (0.37%)
+ TKwimport: 1 (0.37%)
## All identifiers of the AST
population: 20
minimum value: 1
Sys: 4.0
blooming mclasses (threshold: 12.0)
Sys: 16.0
- blooming mclasses (threshold: 12.0)
- Sys: 16.0
--- Detection of the usage of covariance static type conformance ---
-- Total --
- Kinds of the subtype -
return errno;
`}
-fun errnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo: Int is extern `{
- return errno;
-`}
+fun errnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo: Int is
+ extern `{ return errno; `}
private class A
var my_attr = 1234
-test_nitunit3/README.md: Error: there is a block of invalid Nit code, thus not considered a nitunit. To suppress this warning, enclose the block with a fence tagged `nitish` or `raw` (see `man nitdoc`). At 1,1: Syntax Error: unknown token `;`..
+test_nitunit3/README.md: Error: there is a block of invalid Nit code, thus not considered a nitunit. To suppress this warning, enclose the block with a fence tagged `nitish` or `raw` (see `man nitdoc`). At 1,2--4: Syntax Error: unexpected malformed character '\]..
test_nitunit3/README.md: ERROR: nitunit.test_nitunit3.<group> (in .nitunit/test_nitunit3-0.nit): Runtime error: Assert failed (.nitunit/test_nitunit3-0.nit:7)
DocUnits:
TestSuites:
No test cases found
Class suites: 0; Test Cases: 0; Failures: 0
-<testsuites><testsuite package="test_nitunit3"><testcase classname="nitunit.test_nitunit3" name="<group>"><failure message="test_nitunit3/README.md: Invalid block of code. At 1,1: Syntax Error: unknown token `;`.."></failure><system-err></system-err><system-out>assert false
+<testsuites><testsuite package="test_nitunit3"><testcase classname="nitunit.test_nitunit3" name="<group>"><failure message="test_nitunit3/README.md: Invalid block of code. At 1,2--4: Syntax Error: unexpected malformed character '\].."></failure><system-err></system-err><system-out>assert false
assert true
</system-out><error message="Runtime error: Assert failed (.nitunit/test_nitunit3-0.nit:7)
"></error></testcase></testsuite><testsuite package="test_nitunit3"><testcase classname="nitunit.test_nitunit3.<module>" name="<module>"><system-err></system-err><system-out>assert true
4
5
6
-15
-14
7
+8
9
10
-11
-12
-13
--- /dev/null
+syntax_semi2.nit:17,9: Warning: superfluous `;`.
+syntax_semi2.nit:18,10: Warning: superfluous `;`.
+syntax_semi2.nit:19,9: Warning: superfluous `;`.
+syntax_semi2.nit:21,1: Warning: superfluous `;`.
+syntax_semi2.nit:22,1: Warning: superfluous `;`.
+syntax_semi2.nit:22,2: Warning: superfluous `;`.
+syntax_semi2.nit:24,1: Warning: superfluous `;`.
+1
+2
+3
+4
+5
+6
--- /dev/null
+alt/syntax_semi2_alt1.nit:26,3: Syntax Error: unexpected ';'.
test_attr_easy.nit:19,43--53: Warning: expression is already a `Float`.
test_attr_easy.nit:20,5--16: Warning: expression is already a `String`.
test_attr_easy.nit:20,20--26: Warning: expression is already a `B`.
-test_attr_easy.nit:20,44--62: Warning: expression is already a `HashMap[Int, B]`.
+test_attr_easy.nit:20,44--63: Warning: expression is already a `HashMap[Int, B]`.
true false 12345 1.235 asdf true
an instance of B
true true true true
--- /dev/null
+Read 4 chars: # Th
+Read 4 chars: is f
+Read 4 chars: ile
+Read 4 chars: is p
+Read 4 chars: art
+Read 4 chars: of N
+Read 4 chars: IT (
+Read 4 chars: htt
+Read 4 chars: p://
+Read 4 chars: www.
+Read 4 chars: nitl
+Read 4 chars: angu
+Read 4 chars: age.
+Read 4 chars: org
+Read 4 chars: ).
+#
+Read 4 chars:
+# C
+Read 4 chars: opyr
+Read 4 chars: ight
+Read 4 chars: 201
+Read 4 chars: 3 Al
+Read 4 chars: exis
+Read 4 chars: Laf
+Read 4 chars: erri
+Read 4 chars: ère
+Read 4 chars: <al
+Read 4 chars: exis
+Read 4 chars: .laf
+Read 4 chars: @xym
+Read 4 chars: us.n
+Read 4 chars: et>
+
+Read 4 chars: #
+#
+Read 4 chars: Lice
+Read 4 chars: nsed
+Read 4 chars: und
+Read 4 chars: er t
+Read 4 chars: he A
+Read 4 chars: pach
+Read 4 chars: e Li
+Read 4 chars: cens
+Read 4 chars: e, V
+Read 4 chars: ersi
+Read 4 chars: on 2
+Read 4 chars: .0 (
+Read 4 chars: the
+Read 4 chars: "Lic
+Read 4 chars: ense
+Read 4 chars: ");
+
+Read 4 chars: # yo
+Read 4 chars: u ma
+Read 4 chars: y no
+Read 4 chars: t us
+Read 4 chars: e th
+Read 4 chars: is f
+Read 4 chars: ile
+Read 4 chars: exce
+Read 4 chars: pt i
+Read 4 chars: n co
+Read 4 chars: mpli
+Read 4 chars: ance
+Read 4 chars: wit
+Read 4 chars: h th
+Read 4 chars: e Li
+Read 4 chars: cens
+Read 4 chars: e.
+#
+Read 4 chars: You
+Read 4 chars: may
+Read 4 chars: obt
+Read 4 chars: ain
+Read 4 chars: a co
+Read 4 chars: py o
+Read 4 chars: f th
+Read 4 chars: e Li
+Read 4 chars: cens
+Read 4 chars: e at
+Read 4 chars:
+#
+#
+Read 4 chars:
+Read 4 chars: htt
+Read 4 chars: p://
+Read 4 chars: www.
+Read 4 chars: apac
+Read 4 chars: he.o
+Read 4 chars: rg/l
+Read 4 chars: icen
+Read 4 chars: ses/
+Read 4 chars: LICE
+Read 4 chars: NSE-
+Read 4 chars: 2.0
+
+Read 4 chars: #
+#
+Read 4 chars: Unle
+Read 4 chars: ss r
+Read 4 chars: equi
+Read 4 chars: red
+Read 4 chars: by a
+Read 4 chars: ppli
+Read 4 chars: cabl
+Read 4 chars: e la
+Read 4 chars: w or
+Read 4 chars: agr
+Read 4 chars: eed
+Read 4 chars: to i
+Read 4 chars: n wr
+Read 4 chars: itin
+Read 4 chars: g, s
+Read 4 chars: oftw
+Read 4 chars: are
+
+Read 4 chars: # di
+Read 4 chars: stri
+Read 4 chars: bute
+Read 4 chars: d un
+Read 4 chars: der
+Read 4 chars: the
+Read 4 chars: Lice
+Read 4 chars: nse
+Read 4 chars: is d
+Read 4 chars: istr
+Read 4 chars: ibut
+Read 4 chars: ed o
+Read 4 chars: n an
+Read 4 chars: "AS
+Read 4 chars: IS"
+Read 4 chars: BAS
+Read 4 chars: IS,
+
+Read 4 chars: # WI
+Read 4 chars: THOU
+Read 4 chars: T WA
+Read 4 chars: RRAN
+Read 4 chars: TIES
+Read 4 chars: OR
+Read 4 chars: COND
+Read 4 chars: ITIO
+Read 4 chars: NS O
+Read 4 chars: F AN
+Read 4 chars: Y KI
+Read 4 chars: ND,
+Read 4 chars: eith
+Read 4 chars: er e
+Read 4 chars: xpre
+Read 4 chars: ss o
+Read 4 chars: r im
+Read 4 chars: plie
+Read 4 chars: d.
+#
+Read 4 chars: See
+Read 4 chars: the
+Read 4 chars: Lic
+Read 4 chars: ense
+Read 4 chars: for
+Read 4 chars: the
+Read 4 chars: spe
+Read 4 chars: cifi
+Read 4 chars: c la
+Read 4 chars: ngua
+Read 4 chars: ge g
+Read 4 chars: over
+Read 4 chars: ning
+Read 4 chars: per
+Read 4 chars: miss
+Read 4 chars: ions
+Read 4 chars: and
+Read 4 chars:
+# l
+Read 4 chars: imit
+Read 4 chars: atio
+Read 4 chars: ns u
+Read 4 chars: nder
+Read 4 chars: the
+Read 4 chars: Lic
+Read 4 chars: ense
+Read 4 chars: .
+
+m
+Read 4 chars: odul
+Read 4 chars: e te
+Read 4 chars: st_a
+Read 4 chars: nnot
+Read 4 chars: _c_c
+Read 4 chars: ompi
+Read 4 chars: ler
+Read 4 chars: is
+
+Read 4 chars: cfla
+Read 4 chars: gs "
+Read 4 chars: -I /
+Read 4 chars: usr/
+Read 4 chars: incl
+Read 4 chars: ude"
+Read 4 chars:
+ cf
+Read 4 chars: lags
+Read 4 chars: exe
+Read 4 chars: c("p
+Read 4 chars: kg-c
+Read 4 chars: onfi
+Read 4 chars: g",
+Read 4 chars: "--c
+Read 4 chars: flag
+Read 4 chars: s",
+Read 4 chars: "sdl
+Read 4 chars: ")
+
+Read 4 chars: ldfl
+Read 4 chars: ags
+Read 4 chars: "-lm
+Read 4 chars: "
+ l
+Read 4 chars: dfla
+Read 4 chars: gs("
+Read 4 chars: -lm"
+Read 4 chars: , "-
+Read 4 chars: L /u
+Read 4 chars: sr/b
+Read 4 chars: in")
+Read 4 chars:
+end
+Read 4 chars:
+
+fu
+Read 4 chars: n du
+Read 4 chars: mmy
+Read 4 chars: `{ p
+Read 4 chars: rint
+Read 4 chars: f("n
+Read 4 chars: othi
+Read 4 chars: ng..
+Read 4 chars: .\n"
+Read 4 chars: ); `
+Read 4 chars: }
+
+d
+Read 4 chars: ummy
+Read 1 chars:
+
+test_ffi_c_operators.nit:139,7--15: Warning: expression is not null, since it is a `A`.
11
+123
9
+-123
22
3
false
false
false
+false
true
3
4096
true
32
8
+7
+5
+2
+-4
52
456
-123
--123
TId "rank" ../src/test_parser.nit:27,14--17
AType ../src/test_parser.nit:27,20--22
TClassid "Int" ../src/test_parser.nit:27,20--22
+ TAssign "=" ../src/test_parser.nit:27,24
ADecIntExpr ../src/test_parser.nit:27,26
TNumber "0" ../src/test_parser.nit:27,26
AMethPropdef ../src/test_parser.nit:28,2--38,4
AParam ../src/test_parser.nit:28,18
TId "n" ../src/test_parser.nit:28,18
TCpar ")" ../src/test_parser.nit:28,19
+ TKwdo "do" ../src/test_parser.nit:29,2--3
ABlockExpr ../src/test_parser.nit:30,3--38,4
AIfExpr ../src/test_parser.nit:30,3--34,5
TKwif "if" ../src/test_parser.nit:30,3--4
TKwisa "isa" ../src/test_parser.nit:30,8--10
AType ../src/test_parser.nit:30,12--16
TClassid "Token" ../src/test_parser.nit:30,12--16
+ TKwthen "then" ../src/test_parser.nit:30,18--21
ABlockExpr ../src/test_parser.nit:31,4--88
ACallExpr ../src/test_parser.nit:31,4--88
AImplicitSelfExpr ../src/test_parser.nit:31,4
AStringExpr ../src/test_parser.nit:31,84--87
TString "\"\\n\"" ../src/test_parser.nit:31,84--87
TCpar ")" ../src/test_parser.nit:31,88
+ TKwelse "else" ../src/test_parser.nit:32,3--6
ABlockExpr ../src/test_parser.nit:33,4--34,5
ACallExpr ../src/test_parser.nit:33,4--59
AImplicitSelfExpr ../src/test_parser.nit:33,4
TEq "==" ../src/test_parser.nit:49,16--17
AStringExpr ../src/test_parser.nit:49,19--22
TString "\"-n\"" ../src/test_parser.nit:49,19--22
+ TKwthen "then" ../src/test_parser.nit:49,24--27
ABlockExpr ../src/test_parser.nit:50,3--17
ACallAssignExpr ../src/test_parser.nit:50,3--17
AImplicitSelfExpr ../src/test_parser.nit:50,3
TAssign "=" ../src/test_parser.nit:50,12
ATrueExpr ../src/test_parser.nit:50,14--17
TKwtrue "true" ../src/test_parser.nit:50,14--17
+ TKwelse "else" ../src/test_parser.nit:51,2--5
AIfExpr ../src/test_parser.nit:51,7--66,4
TKwif "if" ../src/test_parser.nit:51,7--8
AEqExpr ../src/test_parser.nit:51,10--27
TEq "==" ../src/test_parser.nit:51,21--22
AStringExpr ../src/test_parser.nit:51,24--27
TString "\"-l\"" ../src/test_parser.nit:51,24--27
+ TKwthen "then" ../src/test_parser.nit:51,29--32
ABlockExpr ../src/test_parser.nit:52,3--19
ACallAssignExpr ../src/test_parser.nit:52,3--19
AImplicitSelfExpr ../src/test_parser.nit:52,3
TAssign "=" ../src/test_parser.nit:52,14
ATrueExpr ../src/test_parser.nit:52,16--19
TKwtrue "true" ../src/test_parser.nit:52,16--19
+ TKwelse "else" ../src/test_parser.nit:53,2--5
AIfExpr ../src/test_parser.nit:53,7--66,4
TKwif "if" ../src/test_parser.nit:53,7--8
AEqExpr ../src/test_parser.nit:53,10--27
TEq "==" ../src/test_parser.nit:53,21--22
AStringExpr ../src/test_parser.nit:53,24--27
TString "\"-p\"" ../src/test_parser.nit:53,24--27
+ TKwthen "then" ../src/test_parser.nit:53,29--32
ABlockExpr ../src/test_parser.nit:54,3--20
ACallAssignExpr ../src/test_parser.nit:54,3--20
AImplicitSelfExpr ../src/test_parser.nit:54,3
TAssign "=" ../src/test_parser.nit:54,14
AFalseExpr ../src/test_parser.nit:54,16--20
TKwfalse "false" ../src/test_parser.nit:54,16--20
+ TKwelse "else" ../src/test_parser.nit:55,2--5
AIfExpr ../src/test_parser.nit:55,7--66,4
TKwif "if" ../src/test_parser.nit:55,7--8
AEqExpr ../src/test_parser.nit:55,10--27
TEq "==" ../src/test_parser.nit:55,21--22
AStringExpr ../src/test_parser.nit:55,24--27
TString "\"-x\"" ../src/test_parser.nit:55,24--27
+ TKwthen "then" ../src/test_parser.nit:55,29--32
ABlockExpr ../src/test_parser.nit:56,3--12
ACallAssignExpr ../src/test_parser.nit:56,3--12
AImplicitSelfExpr ../src/test_parser.nit:56,3
TAssign "=" ../src/test_parser.nit:56,7
ATrueExpr ../src/test_parser.nit:56,9--12
TKwtrue "true" ../src/test_parser.nit:56,9--12
+ TKwelse "else" ../src/test_parser.nit:57,2--5
AIfExpr ../src/test_parser.nit:57,7--66,4
TKwif "if" ../src/test_parser.nit:57,7--8
AEqExpr ../src/test_parser.nit:57,10--27
TEq "==" ../src/test_parser.nit:57,21--22
AStringExpr ../src/test_parser.nit:57,24--27
TString "\"-e\"" ../src/test_parser.nit:57,24--27
+ TKwthen "then" ../src/test_parser.nit:57,29--32
ABlockExpr ../src/test_parser.nit:58,3--16
ACallAssignExpr ../src/test_parser.nit:58,3--16
AImplicitSelfExpr ../src/test_parser.nit:58,3
TAssign "=" ../src/test_parser.nit:58,11
ATrueExpr ../src/test_parser.nit:58,13--16
TKwtrue "true" ../src/test_parser.nit:58,13--16
+ TKwelse "else" ../src/test_parser.nit:59,2--5
AIfExpr ../src/test_parser.nit:59,7--66,4
TKwif "if" ../src/test_parser.nit:59,7--8
AEqExpr ../src/test_parser.nit:59,10--27
TEq "==" ../src/test_parser.nit:59,21--22
AStringExpr ../src/test_parser.nit:59,24--27
TString "\"-i\"" ../src/test_parser.nit:59,24--27
+ TKwthen "then" ../src/test_parser.nit:59,29--32
ABlockExpr ../src/test_parser.nit:60,3--20
ACallAssignExpr ../src/test_parser.nit:60,3--20
AImplicitSelfExpr ../src/test_parser.nit:60,3
TAssign "=" ../src/test_parser.nit:60,15
ATrueExpr ../src/test_parser.nit:60,17--20
TKwtrue "true" ../src/test_parser.nit:60,17--20
+ TKwelse "else" ../src/test_parser.nit:61,2--5
AIfExpr ../src/test_parser.nit:61,7--66,4
TKwif "if" ../src/test_parser.nit:61,7--8
AOrExpr ../src/test_parser.nit:61,10--49
TEq "==" ../src/test_parser.nit:61,43--44
AStringExpr ../src/test_parser.nit:61,46--49
TString "\"-?\"" ../src/test_parser.nit:61,46--49
+ TKwthen "then" ../src/test_parser.nit:61,51--54
ABlockExpr ../src/test_parser.nit:62,3--18
ACallAssignExpr ../src/test_parser.nit:62,3--18
AImplicitSelfExpr ../src/test_parser.nit:62,3
TAssign "=" ../src/test_parser.nit:62,13
ATrueExpr ../src/test_parser.nit:62,15--18
TKwtrue "true" ../src/test_parser.nit:62,15--18
+ TKwelse "else" ../src/test_parser.nit:63,2--5
ABlockExpr ../src/test_parser.nit:64,3--66,4
ACallExpr ../src/test_parser.nit:64,3--48
ACallExpr ../src/test_parser.nit:64,3--8
AImplicitSelfExpr ../src/test_parser.nit:70,43
TId "need_help" ../src/test_parser.nit:70,43--51
AListExprs ../src/test_parser.nit:70,51
+ TKwthen "then" ../src/test_parser.nit:70,53--56
ABlockExpr ../src/test_parser.nit:71,2--82,30
ACallExpr ../src/test_parser.nit:71,2--16
AImplicitSelfExpr ../src/test_parser.nit:71,2
AStringExpr ../src/test_parser.nit:82,8--29
TString "\" -h\tprint this help\"" ../src/test_parser.nit:82,8--29
TCpar ")" ../src/test_parser.nit:82,30
+ TKwelse "else" ../src/test_parser.nit:83,1--4
AIfExpr ../src/test_parser.nit:83,6--155,3
TKwif "if" ../src/test_parser.nit:83,6--7
ACallExpr ../src/test_parser.nit:83,9--19
AImplicitSelfExpr ../src/test_parser.nit:83,9
TId "interactive" ../src/test_parser.nit:83,9--19
AListExprs ../src/test_parser.nit:83,19
+ TKwthen "then" ../src/test_parser.nit:83,21--24
ABlockExpr ../src/test_parser.nit:84,2--117,4
AIfExpr ../src/test_parser.nit:84,2--93,4
TKwif "if" ../src/test_parser.nit:84,2--3
AImplicitSelfExpr ../src/test_parser.nit:84,5
TId "only_lexer" ../src/test_parser.nit:84,5--14
AListExprs ../src/test_parser.nit:84,14
+ TKwthen "then" ../src/test_parser.nit:84,16--19
ABlockExpr ../src/test_parser.nit:85,3--86,8
ACallExpr ../src/test_parser.nit:85,3--43
AImplicitSelfExpr ../src/test_parser.nit:85,3
AListExprs ../src/test_parser.nit:86,8
ADecIntExpr ../src/test_parser.nit:86,8
TNumber "1" ../src/test_parser.nit:86,8
+ TKwelse "else" ../src/test_parser.nit:87,2--5
AIfExpr ../src/test_parser.nit:87,7--93,4
TKwif "if" ../src/test_parser.nit:87,7--8
ACallExpr ../src/test_parser.nit:87,10--16
AImplicitSelfExpr ../src/test_parser.nit:87,10
TId "no_file" ../src/test_parser.nit:87,10--16
AListExprs ../src/test_parser.nit:87,16
+ TKwthen "then" ../src/test_parser.nit:87,18--21
ABlockExpr ../src/test_parser.nit:88,3--89,8
ACallExpr ../src/test_parser.nit:88,3--43
AImplicitSelfExpr ../src/test_parser.nit:88,3
AListExprs ../src/test_parser.nit:89,8
ADecIntExpr ../src/test_parser.nit:89,8
TNumber "1" ../src/test_parser.nit:89,8
+ TKwelse "else" ../src/test_parser.nit:90,2--5
AIfExpr ../src/test_parser.nit:90,7--93,4
TKwif "if" ../src/test_parser.nit:90,7--8
ANotExpr ../src/test_parser.nit:90,10--26
AListExprs ../src/test_parser.nit:90,17
TId "is_empty" ../src/test_parser.nit:90,19--26
AListExprs ../src/test_parser.nit:90,26
+ TKwthen "then" ../src/test_parser.nit:90,28--31
ABlockExpr ../src/test_parser.nit:91,3--92,8
ACallExpr ../src/test_parser.nit:91,3--43
AImplicitSelfExpr ../src/test_parser.nit:91,3
TKwisa "isa" ../src/test_parser.nit:99,8--10
AType ../src/test_parser.nit:99,12--18
TClassid "TString" ../src/test_parser.nit:99,12--18
+ TKwthen "then" ../src/test_parser.nit:99,20--23
ABlockExpr ../src/test_parser.nit:100,4--106,11
AVardeclExpr ../src/test_parser.nit:100,4--17
TKwvar "var" ../src/test_parser.nit:100,4--6
TEq "==" ../src/test_parser.nit:101,9--10
AStringExpr ../src/test_parser.nit:101,12--15
TString "\":q\"" ../src/test_parser.nit:101,12--15
+ TKwthen "then" ../src/test_parser.nit:101,17--20
ABlockExpr ../src/test_parser.nit:102,5--9
ABreakExpr ../src/test_parser.nit:102,5--9
TKwbreak "break" ../src/test_parser.nit:102,5--9
+ TKwelse "else" ../src/test_parser.nit:103,4--7
ABlockExpr ../src/test_parser.nit:104,5--105,6
ACallExpr ../src/test_parser.nit:104,5--24
AImplicitSelfExpr ../src/test_parser.nit:104,5
TKwisa "isa" ../src/test_parser.nit:109,8--10
AType ../src/test_parser.nit:109,12--17
TClassid "AError" ../src/test_parser.nit:109,12--17
+ TKwthen "then" ../src/test_parser.nit:109,19--22
ABlockExpr ../src/test_parser.nit:110,4--111,11
ACallExpr ../src/test_parser.nit:110,4--57
AImplicitSelfExpr ../src/test_parser.nit:110,4
AImplicitSelfExpr ../src/test_parser.nit:114,10
TId "no_print" ../src/test_parser.nit:114,10--17
AListExprs ../src/test_parser.nit:114,17
+ TKwthen "then" ../src/test_parser.nit:114,19--22
ABlockExpr ../src/test_parser.nit:115,4--40
ACallExpr ../src/test_parser.nit:115,4--40
AParExpr ../src/test_parser.nit:115,4--25
ABlockExpr ../src/test_parser.nit:116,3--5
TKwend "end" ../src/test_parser.nit:116,3--5
TKwend "end" ../src/test_parser.nit:117,2--4
+ TKwelse "else" ../src/test_parser.nit:118,1--4
ABlockExpr ../src/test_parser.nit:119,2--155,3
AForExpr ../src/test_parser.nit:119,2--154,4
TKwfor "for" ../src/test_parser.nit:119,2--4
TId "a" ../src/test_parser.nit:119,6
+ TKwin "in" ../src/test_parser.nit:119,8--9
ACallExpr ../src/test_parser.nit:119,11--14
AImplicitSelfExpr ../src/test_parser.nit:119,11
TId "args" ../src/test_parser.nit:119,11--14
AImplicitSelfExpr ../src/test_parser.nit:121,6
TId "no_file" ../src/test_parser.nit:121,6--12
AListExprs ../src/test_parser.nit:121,12
+ TKwthen "then" ../src/test_parser.nit:121,14--17
ABlockExpr ../src/test_parser.nit:122,4--45
ACallAssignExpr ../src/test_parser.nit:122,4--45
AImplicitSelfExpr ../src/test_parser.nit:122,4
TId "a" ../src/test_parser.nit:122,44
AListExprs ../src/test_parser.nit:122,44
TCpar ")" ../src/test_parser.nit:122,45
+ TKwelse "else" ../src/test_parser.nit:123,3--6
ABlockExpr ../src/test_parser.nit:124,4--127,5
AVardeclExpr ../src/test_parser.nit:124,4--33
TKwvar "var" ../src/test_parser.nit:124,4--6
AImplicitSelfExpr ../src/test_parser.nit:129,6
TId "only_lexer" ../src/test_parser.nit:129,6--15
AListExprs ../src/test_parser.nit:129,15
+ TKwthen "then" ../src/test_parser.nit:129,17--20
ABlockExpr ../src/test_parser.nit:130,4--136,6
AVardeclExpr ../src/test_parser.nit:130,4--25
TKwvar "var" ../src/test_parser.nit:130,4--6
AImplicitSelfExpr ../src/test_parser.nit:132,12
TId "no_print" ../src/test_parser.nit:132,12--19
AListExprs ../src/test_parser.nit:132,19
+ TKwthen "then" ../src/test_parser.nit:132,21--24
ABlockExpr ../src/test_parser.nit:133,6--64
ACallExpr ../src/test_parser.nit:133,6--64
AImplicitSelfExpr ../src/test_parser.nit:133,6
TId "next" ../src/test_parser.nit:135,19--22
AListExprs ../src/test_parser.nit:135,22
TKwend "end" ../src/test_parser.nit:136,4--6
+ TKwelse "else" ../src/test_parser.nit:137,3--6
ABlockExpr ../src/test_parser.nit:138,4--153,5
AVardeclExpr ../src/test_parser.nit:138,4--33
TKwvar "var" ../src/test_parser.nit:138,4--6
TKwisa "isa" ../src/test_parser.nit:142,13--15
AType ../src/test_parser.nit:142,17--22
TClassid "AError" ../src/test_parser.nit:142,17--22
+ TKwthen "then" ../src/test_parser.nit:142,24--27
ABlockExpr ../src/test_parser.nit:143,5--144,10
ACallExpr ../src/test_parser.nit:143,5--58
AImplicitSelfExpr ../src/test_parser.nit:143,5
AImplicitSelfExpr ../src/test_parser.nit:147,7
TId "xml" ../src/test_parser.nit:147,7--9
AListExprs ../src/test_parser.nit:147,9
+ TKwthen "then" ../src/test_parser.nit:147,11--14
ABlockExpr ../src/test_parser.nit:148,5--149,32
ACallExpr ../src/test_parser.nit:148,5--25
ACallExpr ../src/test_parser.nit:148,5--8
TId "stdout" ../src/test_parser.nit:149,26--31
AListExprs ../src/test_parser.nit:149,31
TCpar ")" ../src/test_parser.nit:149,32
+ TKwelse "else" ../src/test_parser.nit:150,4--7
AIfExpr ../src/test_parser.nit:150,9--152,6
TKwif "if" ../src/test_parser.nit:150,9--10
ANotExpr ../src/test_parser.nit:150,12--23
AImplicitSelfExpr ../src/test_parser.nit:150,16
TId "no_print" ../src/test_parser.nit:150,16--23
AListExprs ../src/test_parser.nit:150,23
+ TKwthen "then" ../src/test_parser.nit:150,25--28
ABlockExpr ../src/test_parser.nit:151,5--44
ACallExpr ../src/test_parser.nit:151,5--44
AParExpr ../src/test_parser.nit:151,5--26
--> AForExpr 1,1--15
TKwfor "for" 1,1--3
TId "i" 1,5
+ TKwin "in" 1,7--8
ACallExpr 1,10
AImplicitSelfExpr 1,10
TId "x" 1,10
TKwmeth "fun" 1,1--3
AIdMethid 1,5--7
TId "foo" 1,5--7
- ASignature 1,12
+ ASignature 1,9
+ TKwdo "do" 1,9--10
ACallExpr 1,12
AImplicitSelfExpr 1,12
TId "z" 1,12
--> ... ... AForExpr 1,1--3,3
TKwfor "for" 1,1--3
TId "i" 1,5
+ TKwin "in" 1,7--8
ACallExpr 1,10
AImplicitSelfExpr 1,10
TId "x" 1,10
TKwmeth "fun" 1,1--3
AIdMethid 1,5--7
TId "foo" 1,5--7
- ASignature 2,1
+ ASignature 1,9
+ TKwdo "do" 1,9--10
ABlockExpr 2,1--5,3
AForExpr 2,1--4,3
TKwfor "for" 2,1--3
TId "i" 2,5
+ TKwin "in" 2,7--8
ACallExpr 2,10
AImplicitSelfExpr 2,10
TId "x" 2,10
threaded
10
parameterized and threaded
+main, waiting for baz
+baz result : 5
--- /dev/null
+# 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 end;interface Object;end;enum Bool;end;enum Int;fun output is intern;end;class A;init do 5.output;fun run do 6.output;end;class B;var val: Int;init(v: Int) do;7.output;self.val = v;end;fun run do val.output;end;class C;var val1: Int;var val2: Int = 10;end;fun foo do 2.output;fun bar(i: Int) do i.output;fun baz: Int do return 4;1.output;foo;bar(3);baz.output;var a = new A;a.run;var b = new B(8);b.run;var c = new C(9);c.val1.output;c.val2.output
--- /dev/null
+# 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 kernel
+
+1.output;
+2.output;;
+3.output;#comment
+
+;4.output
+;;5.output
+#comment
+;6.output
+
+#alt1#7.;comment
--- /dev/null
+# 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 = new FileReader.open("test_annot_c_compiler.nit")
+
+while not f.eof do
+ var s = f.read(4)
+ print "Read {s.length} chars: {s}"
+end
+
+f.close
# limitations under the License.
class A
- var value : Int
+ var value: Int
- init ( value : Int ) do self.value = value
+ init(value: Int) do self.value = value
- fun +( other : A ) : A import value, A `{
+ fun +(other: A): A import value, A `{
int s = A_value( recv );
int o = A_value( other );
return new_A(+s);
`}
- fun -( other : A ) : A import value, A `{
+ fun -(other: A): A import value, A `{
int s = A_value( recv );
int o = A_value( other );
return new_A(-s);
`}
- fun *( by : Int ) : A import value, A `{
+ fun *(by: Int): A import value, A `{
int s = A_value( recv );
return new_A( s * by );
`}
- fun /( by : Int ) : A import value, A `{
+ fun /(by: Int): A import value, A `{
int s = A_value( recv );
return new_A( s / by );
`}
- redef fun ==( other ) import value, nullable Object.as(A) `{
+ redef fun ==(other) import value, nullable Object.as(A) `{
if ( nullable_Object_is_a_A( other ) &&
A_value( nullable_Object_as_A(other) ) == A_value( recv ) )
return 1;
return 0;
`}
- fun %( other : A ) : A import value, A `{
+ fun %(other: A): A import value, A `{
return new_A( A_value( recv ) % A_value( other ) );
`}
-# fun +=( other : A ) : A import value, value=, A `{
-# int new_val = A_value( recv ) + A_value( other );
-# A_value__assign( recv, new_val );
-# return new_A( new_val );
-# `}
-
-# fun -=( other : A ) : A import +=, A, value `{
-# A inv_other = new_A( -1*A_value( other ) );
-# return A__plus_equal( recv, int_other );
-# `}
-
- fun <=>( other : A ) : A import value, A `{
+ fun <=>(other: A): A import value, A `{
return new_A( A_value( recv )* 1024 );
`}
-# fun @( other : A ) : A import value, A `{
-# return new_A( A_value( recv )* 1000 );
-# `}
-
- fun >( other : A ) : Bool import value `{
+ fun >(other: A): Bool import value `{
return A_value( recv ) > A_value( other );
`}
- fun <( other : A ) : Bool import value `{
+ fun <(other: A): Bool import value `{
return A_value( recv ) < A_value( other );
`}
- fun >=( other : A ) : Bool import value `{
+ fun >=(other: A): Bool import value `{
return A_value( recv ) >= A_value( other );
`}
- fun <=( other : A ) : Bool import value `{
+ fun <=(other: A): Bool import value `{
return A_value( recv ) <= A_value( other );
`}
- fun >>( other : A ): A import value, value=, A `{
+ fun >>(other: A): A import value, value=, A `{
int new_val = A_value( recv ) >> A_value( other );
- A_value__assign( recv, new_val );
- return recv;
+ return new_A(new_val);
`}
- fun <<( other : A ): A import value, A `{
+ fun <<(other: A): A import value, A `{
int new_val = A_value( recv ) << A_value( other );
- A_value__assign( recv, new_val );
- return recv;
+ return new_A(new_val);
+ `}
+
+ fun |(other: A): A import value, A `{
+ int new_val = A_value( recv ) | A_value( other );
+ return new_A(new_val);
+ `}
+
+ fun ^(other: A): A import value, A `{
+ int new_val = A_value( recv ) ^ A_value( other );
+ return new_A(new_val);
+ `}
+
+ fun ~: A import value, A `{
+ int new_val = ~A_value( recv );
+ return new_A(new_val);
`}
- fun []( index : Int ) : A import A `{
+ fun &(other: A): A import value, A `{
+ int new_val = A_value( recv ) & A_value( other );
+ return new_A(new_val);
+ `}
+
+ fun [](index: Int): A import A `{
return new_A( index );
`}
- fun []=( index : Int, value : A ) : A import A `{
+ fun []=(index: Int, value: A): A import A `{
return new_A( index + A_value( value ) );
`}
redef fun to_s do return value.to_s
end
-print new A( 1 ) + new A( 10 ) # 11
-print new A( 10 ) - new A( 1 ) # 9
+print new A(1) + new A(10) # 11
+print +new A(123)
+print new A(10) - new A(1) # 9
+print -new A(123)
-print new A( 2 ) * 11 # 22
-print new A( 33 ) / 11 # 3
+print new A(2) * 11 # 22
+print new A(33) / 11 # 3
-#print new A( 44 ) == null # false
-print new A( 55 ) == 55 # false
-print new A( 33 ) == new A( 11 ) # false
-print new A( 22 ) == new A( 77 ) # false
-print new A( 11 ) == new A( 11 ) # true
+print new A(44) == null # false
+print new A(55) == 55 # false
+print new A(33) == new A(11) # false
+print new A(22) == new A(77) # false
+print new A(11) == new A(11) # true
-print new A( 147 ) % new A( 12 ) # 3
-print new A( 4 ) <=> new A( 123 ) # 4096
+print new A(147) % new A(12) # 3
+print new A(4) <=> new A(123) # 4096
-print new A( 1 ) < new A( 100 ) # true
-print new A( 100 ) < new A( 100 ) # false
-print new A( 100 ) < new A( 1 ) # false
+print new A(1) < new A(100) # true
+print new A(100) < new A(100) # false
+print new A(100) < new A(1) # false
-print new A( 1 ) > new A( 100 ) # false
-print new A( 100 ) > new A( 100 ) # false
-print new A( 100 ) > new A( 1 ) # true
+print new A(1) > new A(100) # false
+print new A(100) > new A(100) # false
+print new A(100) > new A(1) # true
-print new A( 1 ) <= new A( 100 ) # true
-print new A( 100 ) <= new A( 100 ) # true
-print new A( 100 ) <= new A( 1 ) # false
+print new A(1) <= new A(100) # true
+print new A(100) <= new A(100) # true
+print new A(100) <= new A(1) # false
-print new A( 1 ) >= new A( 100 ) # false
-print new A( 100 ) >= new A( 100 ) # true
-print new A( 100 ) >= new A( 1 ) # true
+print new A(1) >= new A(100) # false
+print new A(100) >= new A(100) # true
+print new A(100) >= new A(1) # true
-var x = new A( 1 )
-x = x << new A( 5 )
-print x # 32
+print new A(1) << new A(5) # 32
+print new A(32) >> new A(2) # 8
-var y = new A( 32 )
-y = y >> new A( 2 )
-print y # 8
+print new A(3) | new A(6) # 7
+print new A(3) ^ new A(6) # 5
+print new A(3) & new A(6) # 2
+print ~new A(3) # -4
-var a = new A( 456 )
-print a[ 52 ] # 52
+var a = new A(456)
+print a[52] # 52
-a[ 74 ] = new A( 96 )
+a[74] = new A(96)
print a # 96
-
-print(+(new A(123)))
-print(-(new A(123)))
do
init_gtk
- win = new GtkWindow( 0 )
+ win = new GtkWindow(new GtkWindowType.toplevel)
+ win.connect_destroy_signal_to_quit
- container = new GtkGrid(2,1,true)
+ container = new GtkGrid
win.add( container )
lbl = new GtkLabel( "Hello world" )
export LANG=C
export LC_ALL=C
export NIT_TESTING=true
-export MNIT_SRAND=0
+export NIT_SRAND=0
unset NIT_DIR